JAX 07: (JSF-Ajax) Maven für alle

Maven für alle!Die Jax lässt sich mal wieder sehr gut an. Nach 2 Jahren Abstinenz tut es gut, unter 1600 Entwicklern (ok, heute, am Montag, sind wohl nur ca 600 hier) zu sein und sich als Teil einer großen Bewegung zu sehen.

Die erste Installations-Session ist gerade durch. Knapp 80 Teilnehmer der JSF – Ajax – Session haben mal fix einen Grundkurs in Maven bekommen und Ihre Notebookplatten mit knapp 500mb an Session-Files zugepflastert. Nun steigt die Spannung was wir mit den Files machen…

und jetzt alle gemeinsam: mvn clean jetty:run

Ubuntu 7.04

Ubuntu ist ab sofort in der Version 7.04 aka „Feisty Fawn“ verfügbar. Da ich ohnehin gerade einen Testserver für meine Entwicklungsarbeit aufsetze, habe ich mir die Serverversion gezogen. Die sieht sehr gut aus! SuSE – bisher mein am meisten gnutztes Linux – hat somit bei mir leider wieder einige Punkte verloren…

Mozilla Thunderbird 2.0

Mozilla hat heute seinen Standalone-Emailclient „Thunderbird“ in der Version 2.0 heruasgebracht. Neu hinzugekommen sind unter anderem einige neue Features zur besseren Organisation der EMails und ein verbessertes Popup bei neuen Nachrichten. Bei der Einrichtung neuer Konten ist nun die Einstellung für einen Gmail-Account vorkonfiguriert.

Google Developer Day in Hamburg

Google veranstaltet erstmals einen Developer Day. In verscheidenen Städten – verteilt rund um den ganzen Globus – können sich Entwicker und Interessierte über die Toolkits von Google informieren. Doch der Erfahrungsaustausch soll in beide Richtungen stattfinden: auch das Google Team möchte gern wissen, was wir Entwickler eigentlich suchen, nutzen und benötigen.

Für alle, die nicht an der Veranstaltung teilnehmen können, wird ein entsprechender Live-Stream via YouTube ausgestrahlt. Oder Ihr schaut einfach hier rein, denn ich bin mit von der Partie 🙂

Bean Scopes

Bean Scopes (in Reihenfolge der Lebensdauer):

  • NONE: das Objekt wird bei jedem Zugriff neu angelegt
  • REQUEST: das Objek wird beim Start des Request Lifecycles angelegt und wieder entfernt, wenn der Cycle durchlaufen ist
  • FLASH: Ein State des Tomahawk-Projektes. Objekt wird auf Anweisung in den Komponentenbaum mit aufgenommen und bleibt bis zum nächsten Request erhalten. Bleib also auf der „gleichen“ Seite und noch genau bis zur nächsten Seite erhalten. Field muss mit „t:saveState“ in den Flash-Fokus gehoben werden.
  • DIALOG: Verschiedene Komponentenbibliotheken implemetieren eine Variante, die Objekte zwischen 2 definierten Punkten leben lassen. U.a. erfüllen Trinidad und Shale diese Technik. Bsp: „s:conversationStart“ / „s:conversationEnd“
  • SESSION: Statis bleiben genau während der (per Coockie) gespeicherten Session erhalten. Dies ist allerdings extrem speicherineffizient.
  • APPLICATION: Zentrale Settings, Basisdaten, für alle Benutzer identisch

CUPS: Drucker-Warteschlange neu starten

CUPS ist ein möchtiges Tool, um Drucker zentral zu verwalten. Allerdings macht CUPS in der Standard-Installation von SuSE manchmal sorgen, da der User „root“ nicht für das Admin-Interface (Erreichbar via Web-Browser unter der IP <your server>:631) freigeschaltet ist. Manchmal macht es auch Sinn, die Warteschlangen nur über die Konsole zu steuern.

  • lpstat -p zeigt die aktuellen Warteschlangen inklusive Status
  • lpstat -p -o zeigt zusätzlich auch die ausstehenden Druckaufträgean

Um eine Warteschlange neu zu starten, weil sich z.b. ein Netzwerkdrucker mal an einem Auftrag verschluckt hat und die weitere Bearbeitung der Druckaufträge nicht funktioniert, sind folgende Befehle gut:

  • /usr/bin/enable <printername> schaltet die Warteschlange wieder ein
  • /usr/sbin/accept <printername> erklärt CUPS, dass wieder Aufträge angenommen werden dürfen.

Entsprechend kann eine Warteschlange auch abgeschlatet werden, indem man folgende Befehle verwendet:

  • /usr/bin/disable <printername> schaltet die Warteschlange aus
  • /usr/sbin/reject <printername> weist CUPS an, keine weiteren Aufträge mehr anzunehmen

Socket-Programmierung in Java

Java als plattformunabhängige Programmiersprache unterstützt im Package java.net unmittelbar die Socket-Programmierung. Das zeigt die Betriebssystemunabhängigkeit des Socket-Konzeptes. Die Implementierung der Sockets für die verschiedenen Plattformen (Linux, Windows, Spezialsysteme) erfolgt in der Klassenbibliothek der virtuellen Maschine.

Die Klassen für die Socket-Programmierung sind Socket und ServerSocket. Folgendes Kurzbeispiel zeigt die Verwendung:

ServerSocket serverSocket = new ServerSocket(port);
//Serversocket mit bestimmter Portnummer erstellen
while(true) {
Socket clientSocket = serverSocket.accept();
//auf Anfragen warten
InputStream input = clientSocket.getInputStream();
//InputStream-Objekt öffnen
int data = input.read();
//Daten lesen
clientSocket.close();
//Verbindung schließen
}

FOSDEM

Die FOSDEM entwickelt sich offenbar zur ersten Adresse, wenn es um die Entwicklung freier Software geht. Heise berichtet inzwischen ausführlich von derKonferenz, und die Blogsphähre quillt über…. Mit Novell, Google und Sun waren auch wieder große Firmen dabei, die wie zu guten alten Internet-Hype-Zeiten a la 1999 / 2000 die Developer direkt vom Gang zur Mensa einkassierten. Sieben Jahre hat es gedauert, um aus dem kleinen Treffen irgendwo in Belgien ein „must“ zu machen. Hoffentlich hält diese Entwicklung an!

In 2007, FOSDEM was held on February 24th and 25th in the usual venue. As the ULB can not provide more space, FOSDEM might have to be moved to a different location within Brussels.

This year, the schedule features main tracks (1h long), lightning talks (15 mins) and the usual specialised developer rooms. First main talk has been given by Pieter Hintjens on the hot topic of Status of Software Patents in Europe. Georg Greve closed the event with a speech entitled Beyond GPLv3.

Main Tracks :

* Security : Security Testing, Metasploit Project, Bacula
* Desktop Applications : Xorg, AIGLX, GEGL
* Development and Languages : Turbocharging Linux with Mono, GDB Tracepoints, Profiling Desktop Applications
* Kernel: Reactos, Linuxbios, Linux Kernel
* Web: Plone 3.0, Drupal, Mozilla
* Internet Servcies : JBoss BPM, Secure Communications with Jabber, Samba

Keynotes : OLPC, Liberating Java

There have been devRooms about CrossDesktop, KDE, GNOME, openSUSE, Mozilla, GNU Classpath+OpenJDK DevJam, CentOS+Fedora, Jabber, OpenGroupware+GNUstep, Python, Research Room, X.org, Gentoo, Debian and Embedded.

(Teileweise aus wikipedia.org)

JSF & MyFaces: Session terminieren

Die klassische Methode, um eine JSF-Session zu beenden, ist über den Zugriff auf die Session via dem externen Kontext der Webanwendung in der entsprechenden Backingbean:

public String logout() {
FacesContext fc = FacesContext.getCurrentInstance();
HttpSession session = (HttpSession) fc.getExternalContext().getSession(false);
session.invalidate();
return „logout_success“;
}

Bei Verwendung der MyFaces-Implementierung >= 1.4 fehlt jedoch das HttpSession – Objekt. In der JSP ist der Zugriff jedoch ohne Probleme möglich:

<% session.invalidate(); %>
<c:redirect url=“login.jsf“ />