[JavaEE] JSF Tag-Library zum Darstellen von BigData

Es ist heutzutage eine Herausforderung (wirklich) große Datenmengen (BigData) in ansehnlicher Form (neudeutsch “management-tauglich”) darzustellen. Ein toller Lösungsansatz die JavaScript-Bibliothek D3.js die die Transformation von XML, JSON & Co in SVG-Grafiken vornimmt. Da mir die Gestaltung eines sauberen Backends immer besser gelingt, wenn ich zu JavaEE greife, habe ich beschlossen, eine entsprechende JSF-Tag-Library zu schreiben, die das Darstellen von verschiedenen Diagrammen vereinfacht.

Continue reading “[JavaEE] JSF Tag-Library zum Darstellen von BigData”

JavaTutorial – Wann geht es weiter?

Hallo zusammen, da ich zur Zeit sehr viele Mails und Comments bekomme möchte ich euch ein kleines Update bezüglich des Java EE Tutorials geben.

Ich habe gerade leider wenig Zeit, da ich parallel noch an einer größeren Geschichte in Richtung Spieleentwicklung arbeite. Allerdings hatte ich die Ehre, dass sich ein sehr kompetenter Student in meiner Abteilung beworben hat, mit dem ich das Video-Tutorial fertig stellen und sogar noch etwas verbessern konnte. Wir klären demnächst ob es offiziell freigegeben werden darf, sodass es euch allen zugänglich wird.

Bis dahin bitte ich noch um etwas Geduld, es sollte keinen Monat mehr dauern!

Jaxb und das Generieren von WebServices in Java

Generiert man aus einer Klasse in der man Jaxb-Annotations verwendet einen WebService bekommt man häufig mit unerwünschten JaxbElements zu tun. Um diesen Typ in den generierten Klassen zu vermeiden hilft dieses Tutorial.

Download ([downloadcounter(JAXB_und_Webservices.pdf)]x heruntergeladen)

Balsamique – MockUps mal nicht mit PowerPoint

Ich wurde letztens von einem Kollegen auf ein tolles Tool aufmerksam gemacht mit dem man kinderleicht und in Windeseile MockUps erstellen kann. MockUps sind Designentwürfe für Oberflächen von Anwendungen. Diese Entwürfe helfen den Entwicklern beim Umsetzen der häufig sehr abstrakten und ungenauen Seitenbeschreibungen.

Das Tool um das es geht heißt Balsamiq und kostet leider leider 80$. Wenn man jedoch mal schnell ein paar Seiten entwerfen möchte kann man die 15 Tage Testversion nutzen. Meistens reicht diese Zeit völlig aus um den Job zu erledigen.

Continue reading “Balsamique – MockUps mal nicht mit PowerPoint”

Java EE 6 Tutorial – Es hat begonnen…

Da Java EE 6 Tutorials rar sind – und mein Wissen über die neue Spezifikation noch begrenzt – habe ich mich entschlossen ein etwas größeres Video-Tutorial-Projekt zu beginnen in dem ich von der Installation einer Java EE Entwicklungsumgebung bis hin zur Auslieferung eines fertigen Projekts jeden Schritt erklären möchte. Das hilft mir beim Lernen und euch hoffentlich auch! 🙂

Ich werde versuchen so viele spannende Technologien wie möglich einzubauen um euch einen guten Einblick zu geben was alles mit Java EE machbar ist.

Die ersten paar Videos sind hochgeladen. Ihr findet sie hier:

https://www.jofre.de/javaeetutorial/

Die Themen mit grünem Häkchen sind bereits da, die anderen lade ich in den nächsten Wochen hoch. Wollt ihr über neue Videos informiert werden aboniert einfach meinen RSS-Feed.

Ich befürchte, dass dieses Vorhaben neben dem OS-Entwicklungsbuch mein bisher umfangreichstes Projekt wird. Aber mit eurem Feedback bin ich sicher, dass wir das schnell und ordentlich über die Bühne bringen.

Feedback ist jederzeit willkommen und hilft mir die kommenden Videos besser zu gestalten!

Komplexe WebServices in PHP mit dem Zend Framework aufrufen

Hallo zusammen, hier mal wieder ein kurzes Tutorial über die Verwendung von WebServices in PHP mit dem Zend Framework. Dieses Tutorial ist darauf angelegt komplexe Typen richtig als Eingabeparameter anzugeben und abstrakte Klassen über SoapVar richtig zu definieren.

In dem Tutorial erstellen wir einen kleinen WebService in Java und sprechen diesen dann über PHP an.

Ich hoffe es hilft dem ein oder anderen. Über Feedback freue ich mich wie immer!

Download (Source + Tutorial) ([downloadcounter(PHPWebServiceWithZend.zip)]x heruntergeladen)

Download (Tutorial) ([downloadcounter(PHPWebServiceWithZend.pdf)]x heruntergeladen)

Abstrakte Klassen über SOAP WebServices in PHP verwenden

Neulich habe ich versucht einen WebService aus PHP heraus über SOAP aufzurufen. Das Problem war, dass in dem Input des WebServices abstrakte Klassen verwendet wurden die sich – wie wir alle wissen – nicht instanziieren lassen. So kann man aus der abstrakten Klasse “Verkehrsmittel” kein Objekt erstellen, aus der Klasse “TAuto” die auf “TVerkehrsmittel” aufbaut allerdings schon.

Wenn man sich eine WSDL-Datei (WebService Definition Language) anschaut, sieht man, dass in unserem Beispiel folgender Inputtyp angegeben wäre:

<nameSpace1:TVerkehrsmittel xsi:type="nameSpace2:TAuto">

Wir erstellen uns also ein “Verkehrsmittel” vom Typ “Auto”. Damit die Soap-Implementierung von PHP versteht, dass wir ein Auto erstellen wollen müssen wil folgendes tun:

$verkehrsmittel = array('farbe' => 'rot', 'geschwindigkeit' => 60);
$auto = new SoapVar($verkehrsmittel, SOAP_ENC_OBJECT, 'TAuto',
     'http://www.webservices.jofre.de/typenamespace/');

Wenn wir unserem WebService ‘$verkehrsmittel’ übergeben kracht’s und wir sehen einen Errorcode, dass keine Instanz von TVerkehrsmittel erstellt werden kann. Wenn wir aber eine SoapVar erstellen, funktioniert alles wunderbar.

Das Zauberwort heißt also SoapVar().

Was ist neu in Java EE 6?

Alle großen Unternehmen (IBM, Oracle, SAP, …) lassen ihre Application Server nach der Java EE 6 Spezifikation zertifizieren. Aber was bringt Java EE 6 eigentlich mit sich? Hier eine kurze Auflistung:

  • Servlet-Konfiguration über Annotations:
    @WebServlet(name="MySevlet", urlPatterns={"/jofre/MyServlet"})
    public class MyServlet extends HTTPServlet { ... }
  • JSF 2.0 Konfiguration über Annotations:
    @ManagedBean(name = "jofreBean")
    @SessionScoped
    public class JofreBean { ... }
  • EJB 3.1 Singletons (Eine Bean pro JVM):
    @Singleton
    public class MySingletonBean { ... }
  • EJB 3.1 Timer (EJB-Aufrufe pro Zeit):
    @Stateless
    public class TimerEJB {
    	@Schule(dayOfWeek="Mon")
    	public void ItIsMonday(Timer timer) { ... }
    }
  • EJB 3.1 Asynchrone Session-Bean-Methoden:
    @Stateless
    public class MyBean {
     
    	@Asynchronous
    	public void browseData();
    }
  • JPA 2.0 Abbilden von Collections:
    @Entity
    public class Person
    {
    	@ElementCollection
    	private Set firstNames;
    }

Das sind natürlich nur einige wenige Neuerungen aber das macht natürlich Lust auf mehr 🙂 Folgende Server unterstützen Java EE 6:

  • IBM WebSphere Application Server 8
  • Sun/Oracle GlassFish
  • Tomcat 7 (Beta)

JavaEE Entwicklungsumgebung aufsetzen mit WebSphere Community Edition

Hallo zusammen, seit einiger Zeit versuche ich mich an Videotutorials da ich von den Video2Brain CDs total begeistert bin. Hier stelle ich heute mein erstes Video vor mit dem wunderbaren Titel: “JavaEE Entwicklungsumgebung mit WebSphere Community Edition und Eclipse einrichten”.

Darin beschreibe ich wie man eine simple Entwicklungsumgebung zum lokalen Erstellen von Geschäftsanwendungen aufbaut. Diese soll als Basis für kommende Tutorials dienen. Geplant sind für nächste Zeit die Themen:

  • WebServices
  • REST Services
  • JSP
  • JSF
  • EJB
  • Spring
  • Hibernate

Edit: Java EE 6 ist toller neuer interessanter, deswegen werde ich die Tutorials nicht weiter auf dem WAS CE (Java EE 5) entwickeln sondern auf GlassFish umsteigen.

Genug versprochen, hier kommt das Video:

Eintrag x bis y aus einer Tabelle zurückgeben

Ich stand neulich vor dem Problem ein begrenzes Resultset zu benötigen, das genau Eintrag x bis y aus der Tabelle einer Datenbank (DB2) beinhaltet.

Vor dieser Herausforderung stehen mit Sicherheit viele Entwickler die sich mit Suchabfragen, Foreneinträgen oder Artikelauflistungen beschäftigen. Nämlich genau immer dann, wenn es darum geht ein Paging zu implementieren in dem nicht alle Ergebnisse auf einmal, sodern gestaffelnt nach n Einträgen angezeigt werden sollen. Aber wie formuliere ich dazu ein Statement? Eine nette Kollegin konnte helfen:

with temp as (
select Name,
       Vorname,
       Alter,
       rownumber() over (order by Alter) as row
from Tabelle
)
select Name, Vormane, Alter
from temp
where row between 100 and 200;

Wir hängen also nur eine weitere Spalte an unser Resultset dran (row) und füllen diese über die vordefinierte Funktion “rownumber()”. Dadurch wird “row” durchnummeriert und wir können einfach Eintrag 100 – 200 abfragen.