Sonntag, 13. November 2011

Run Glassfish V3 as a Service on Ubuntu

I have used the this article as a basis, and adopted it for my needs. I had the following requirements:

  • run as a standalone service
  • start on startup

For the blog, I used also root for the user. So start a new terminal and write:

sudo -s

We have to install a jdk

sudo apt-get install openjdk-7-jdk

or

sudo apt-get install openjdk-6-jdk

You can also search for other jdk packages

apt-cache search jdk

Install Glassfish

cd /opt
wget  http://download.java.net/glassfish/v3/release/glassfish-v3.zip
unzip glassfish-v3.zip
rm glassfish-v3.zip

Now glassfish is installed at /opt/glassfishv3! To start automatically at startup, we have to create the following file /etc/init.d/glassfish.

#!/bin/sh
#
# glassfish init script for Linux 
# Simplest possible case -- no password file, one default domain
# it would be simple to add such options

GLASSFISH_HOME=${GLASSFISH_HOME:-"/opt/glassfish3/glassfish"}

case "$1" in
start)
    $GLASSFISH_HOME/bin/asadmin start-domain
    $GLASSFISH_HOME/bin/asadmin start-database
    ;;
stop)
    $GLASSFISH_HOME/bin/asadmin stop-domain
    $GLASSFISH_HOME/bin/asadmin stop-database
    ;;
restart)
    $GLASSFISH_HOME/bin/asadmin restart-domain
    $GLASSFISH_HOME/bin/asadmin stop-database
    $GLASSFISH_HOME/bin/asadmin start-database
    ;;
\*)
    echo "usage: $0 (start|stop|restart|help)"
esac

This starts not only the glassfish server but also the integrated javadb.

To start, stop, restart Glassfish simply run these commands:

sudo /etc/init.d/glassfish start
sudo /etc/init.d/glassfish stop
sudo /etc/init.d/glassfish restart

But for a simpler test you can just reboot your system:

sudo reboot

Check http://localhost:8080 if it is running.

Donnerstag, 27. Oktober 2011

Spielräume

Spielräume Spielräume brauchen wir um kreativ zu sein. Spielräume bedeuten jedoch nicht, dass man nicht geführt wird, genau so wenig wie Führung heisst, dass man keine Spielräume haben kann.

"Um großangelegte Veränderungen umzusetzteen, müsste darüberhinaus ein breiter Konsens zwischen unterschiedlichen Interessensgruppen gefunden werden. Dafür sind sowohl Visionen als auch eine charismatische Führung notwendig."

Tom DeMarco spielräume

Mittwoch, 26. Oktober 2011

Strategic Decisions

Strategische Entscheidungen zeichnen sich nicht dadurch aus, dass sie unbedingt sehr schwierig sind, aber sie haben einen großen Impact für folgenden Aktivitäten.

Einmal getroffen sind sie oft schwer zu ändern.

Dienstag, 25. Oktober 2011

Führung

"Führung ist Dienstleistung am Mitarbeiter." Unbekannt

Oft sieht es so aus als ob unsere Manager immer nur gut Laune haben, um 16:00 aus dem Büro verschwinden. Aber meist ist die Führung am besten die man kaum merkt, und trotzdem spürt. "Ich weiß nicht was da so besonders war, aber es hat Spaß gemacht und funktioniert."

Dienstag, 26. Juli 2011

OpenSource vs. ClosedSource

OpenSource vs. ClosedSource OpenSource bedeutet, dass der Code so gut geschrieben ist, dass es Freude bereitet ihn zu zeigen.

ClosedSource...

Samstag, 25. Juni 2011

escalation of commitment

Wer mich kennt weiß, dass ich mich nicht nur gern mit Software beschäftige, sondern auch mit Bergsteigen und Klettern. Darin bin ich zwar nicht richtig gut, aber man muss sich ja mit irgendwas in seiner Freizeit beschäftigen :-). Beim Bergsteigen beschäftigt man sich sehr viel mit Risikomanagement. Bei jeder Tour die man plant versucht man natürlich das Risiko zu minimieren. Jedoch weiß man auch, dass man es nicht vollständig eliminieren kann. Denkt man darüber mal genauer nach spielt man vielleicht des öfteren mit seinem Leben, und wenn einem das bewusst ist, ist dies ja auch ok.

Vor längerem bin ich über den Ausspruch "escalation of commitment" gestoßen, und er lässt mich nicht mehr los. Ich finde einfach so viele parallelen von dem Risikomanagement am Berg zum Risikomanagement beim Software Entwickeln. Und nicht nur das, ich lerne damit auch Leute und deren Reaktionen auf Kritik besser zu verstehen.

Aber nun zuerst einmal zu dem Zitat:

Je mehr wir in eine Entscheidung investiert haben (zB in Form von Geld, Aufstiegsmühen, Vorbereitungszeit, usw.), desto stärker fühlen wir uns dieser Entscheidung verbunden bzw. verpflichtet. Wir sind auch dann noch bereit, weitere Energien, Mühen und erhebliche Risiken in die getroffene Entscheidung zu stecken, wenn für einen neutralen Beobachter längst erkennbar ist, dass die Entscheidung unsinnig bzw. hoch riskant ist. entscheidungsfindung aus bergundsteigen 3/04

Ich selber konnte diese Reaktionen auch öfters bei Softwareprojekten erkennen, welche nicht ganz rund liefen. Die beteiligten Personen gehen oft in Tauchmodus und sind für Veränderungen nur sehr schwer zu motivieren. Änderungen werden dann oft als negativ bzw. als Zugeständnis von Fehlverhalten gesehen. Etablierte und oft bewährte Techniken, Vorgehensweisen oder auch Tools werden dann in Frage gestellt.

Verinnerlicht man sich das Zitat und denkt genauer darüber nach, kann man das auch verstehen. Umso mehr Respekt muss man dann doch jenen Menschen schenken, welche in solchen Momenten im wahrsten Sinne des Wortes die "Kurve kriegen" bzw. umdrehen.

Die Softwareentwicklung hat sich in den letzten Jahren extrem weiter entwickelt. Wir sind im Zeitalter der objektorientierten Sprachen, Skript-Sprachen versuchen gerade mal den Markt zu erobern. Was wir nun brauchen sind Projektmanager die jahrelang oder jahrzehntelang aufgebaute Weisheiten über Bord werfen und neue (agile) Techniken versuchen. Oder Entwickler die bereit sind sich neue Problemlösungsstrategien anzueignen und neue (agile) Vorgehensweisen umsetzen.

Charlie Poole meinte in seinem Vortrag immer wieder: Separation of concern is one of the main principle from object oriented programming. Was für mich ein synonym dafür ist, dass man sich einem Paradigmen wechsel unterziehen muss, wenn man von einer prozeduralen auf eine objektorientierte Sprache umsteigt.

Die Einführung von Agilen Methoden in ein Unternehmen kann oft einem Kulturschock gleich kommen. Das selbige kann einem auch passieren wenn man direkt von der Uni in einem konservativ geführtem Unternehmen Fuß fasst.

escalation of commitment hat im Agilen eigentlich keinen Platz. Dort wird versucht Entscheidungen so spät wie möglich zu treffen, also mit dem Maximum an Wissen.

Donnerstag, 10. März 2011

Java DeepCopy via Serialization

Sometimes you need a way to make a deepcopy of all your objects. May be not the fastest :-). You have to ensure, that all of your objects are serializeable.

public static <T> T deepCopy(T o) throws Exception{
 ByteArrayOutputStream baos = new ByteArrayOutputStream();
 new ObjectOutputStream(baos).writeObject(o);
 ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
 return (T) new ObjectInputStream(bais).readObject();
}