PFH-Technologie-Forum TECHNOLOGIE - FORUM 28. März 2008
PFH-Technologie-Forum AGENDA – JBoss World 2008 – JBoss Seam – JBoss SOA Platform – Jboss Developer Studio/Tools – Portal – Hibernate Search
PFH-Technologie-Forum JBoss –1999: EJBoss (EJB Open Source Server) -> JBoss –Gegründet von Marc Fleury (F) –JBoss Enterprise Middleware Suite (JEMS) –Finanzierung durch: –Consulting –Schulungen und Zertifizierung –Support
PFH-Technologie-Forum JBoss 2006: Übernahme duch Red Hat um USD 420Mio Folge: JBoss a Division of Red Hat DJ Marc Fleury Produktauswahl: JBoss Application Server Apache Tomcat JBoss jBPM JBoss Cache JBoss Developer Studio/JBoss Tools JBoss Portal JBoss Drools Hibernate
PFH-Technologie-Forum Jboss World Findet Jährlich statt Produktpräsentationen und Best-Practice Beispiele Ca. 800 Teilnehmer 2008 Stark getrieben von Red Hat
PFH-Technologie-Forum Red Hat Inc. Gründung 1993 Vertreibt die bekannte Linux Distribution Durch die Akquisition von Jboss ist Red Hat in der Lage eine durchgänge Enterprise Plattform vom Betriebssystem bis zur Middleware anzubieten Open Source ist auch in Zukunft Basis
PFH-Technologie-Forum JBoss Seam Vorteile von JSF/JPA gegenüber Struts/EJB 2 –Fewer, finer grained artifacts keine DTOs mehr notwendig saubere MVC –Weniger Overhead keine Struts/EJB 2.x Vorlagen Keine direkten Aufrufe von HttpSession oder HttpRequest –Einfacher ORM Noch einfacher als das Hibernate API!
PFH-Technologie-Forum JBoss Seam Vorteile von JSF/JPA gegenüber Struts/EJB 2 JSF ist einfach und erweiterbar Eigene UI widget suites Gute AJAX Unterstützung JPA Mächtiges object/relational mapping, mehr als EJB Alle Komponenten sind POJOs, d.h. einfach mit TestNG oder Junit zu testen
PFH-Technologie-Forum JBoss Seam Trotzdem bleiben einige Probleme: JSF Backend Bean verbindet Schichten Refactoring bleibt schwierig Keine Unterstützung für den Business Layer Validierung setzt DRY (Don´t repeat yourself) nicht um XML zu wortreich Wie wird der Business Layer erstellt? EJB3? - kann nicht direkt von JSF verwendet werden EJB3? - keine Scope Konzept
PFH-Technologie-Forum JBoss Seam Und noch einige Dinge zu erledigen: Workflow Ad-hoc Back Buttons werden nicht unterstützt Keine Stateful Navigation Langandauernde Business Prozesse? Keine Multi-tab/window Unterstützung Alle Operationen werden in der Session ausgeführt – mögliches Speicherleck Kein Support für einen Conversation Context Memory leak – Objekte werden nicht schnell genug aus dem Speicher entfernt
PFH-Technologie-Forum JBoss Seam Einfaches JSF mit Seam – Entitäten werden direkt referenziert: Item: Name: Price (EUR): <f:convertNumber type="currency" pattern="$###.##" />
PFH-Technologie-Forum JBoss Seam public class EditItemBean implements EditItem EntityManager entityManager; Long id; Item item; // getter and setter public String find(Long id) { item = entityManager.find(Item.class, id); return item == null ? "notFound" : "success"; public String save(Item item) { item = entityManager.merge(item); return "success"; } Seam Komponente im Conversation Scope Der Scope wird zwischen den gehalten
PFH-Technologie-Forum JBoss Seam Seam bietet hierarchische, stateful Kontexte:
PFH-Technologie-Forum JBoss Seam public class PasswordChanger User currentUser; public void changePassword() { entityManager.merge(currentUser); } Vor dem Methoden- aufruf wird der User injected, nach dem Methodenaufruf wird der Status wieder im Context gespeichert
PFH-Technologie-Forum JBoss Seam JPA Persistence Context Was ist ein Persistence Context? eine Hashmap mit allen Objekten, die ich geladen oder gespeichert haben möchte hält maximal ein In-Memory Objekt für jeden Datenbankeintrag solange der Context aktiv ist ein natürlicher first-level Cache schreibt SQL so spät als nötig (automatisch oder händisch) Der PC hat einen flexiblen Scope default: gleicher Scope wie die System Transaktion (JTA) extended: PC ist an das Stateful Session Bean gebunden
PFH-Technologie-Forum JBoss Seam Model based Verfication Validierung auf der Benutzeroberfläche? Ja, aber Ergebnisse müssen dem Benutzer wieder dargestellt werden Aber: normalerweise braucht man dieselbe Validierung auch im Persistence Layer class Long id; String max=1000, message="Die Beschreibung muß zwischen 3 und 1000 Zeichen lang sein") String description;
PFH-Technologie-Forum JBoss Seam Zukunft Web Beans (JSR-299) Auch in anderen Containern lauffähig Bookmarkable URLs Identity Management SSO Integration in JBoss Portal (inter-portlet communication) (Seam Portlet)
PFH-Technologie-Forum JBoss SOA Platform Service orientierte Plattform Basiert auf JBossESB, Drools, JBossWS, JBossTS, JBoss Messaging and jBPM Läuft Standalone oder deployed im JBoss App Server JBossESB ist der Verbinder Aufgrund der unterstützten Protokolle und Möglichkeiten ist es mehr ein "Internet Service Bus" Unterstützt einen schrittweisen Ansatz Man muß am Anfang nicht alles Wissen um von der Architektur zu profitieren Wissen kann Schritt für Schritt aufgebaut werden
PFH-Technologie-Forum JBoss SOA Platform Typische Aufgaben eines ESB: Messaging Infrastruktur Process Orchestrattion, z.b. via WS-BPEL Protokoll Umsetzung Adapter Change management (Hot Deployment, Versionierung, Lifecycle Management) Fehlertoleranz Security Steuerung
PFH-Technologie-Forum JBoss SOA Platform
PFH-Technologie-Forum JBoss SOA Platform Services und Messages Alles innerhalb eines ESB ist ein Service Services interagieren über Messages Messages sind Teil des Contracts zwischen Client und Servcies Messages sind nicht an spezifische Protokolle gebunden Services sind nicht an spezifische Protokollimplementierungen gebunden , S-FTP, JMS, File, etc, Eigene Implementierungen können hinzugefügt werden
PFH-Technologie-Forum JBoss SOA Platform Aufbau einer Message
PFH-Technologie-Forum JBoss SOA Platform Action Pipeline
PFH-Technologie-Forum JBoss Tools JBoss IDE Opensource IDE seit 2001 JBoss AS, Hibernate, JBPM, Drools, FreeMarker und mehr Exadel Studio Commercial IDE seit 2004 JSF, Struts, Hibernate and more Richfaces/Ajax4JSF framework Red Hat geht im März 2007 Partnerschaft mit Exadel ein um die Produkte auf Opensource Schiene zu bringen
PFH-Technologie-Forum JBoss Tools 9 Monate später...
PFH-Technologie-Forum JBoss Tools Funktionen – Seam Seam Wizards Hot deploy automatically setup Validation of Seam constructs EL understanding in java, pages.xml, etc. Components.xml editor
PFH-Technologie-Forum JBoss Tools Funktionen – JSF Visual Editing Supports JSF, Facelets, HTML etc. Includes and CSS stylings are honored Rendering by a real browser engine (Mozilla) EL expression completion incl. Seam components OpenOn (F3) on expressions
PFH-Technologie-Forum JBoss Tools Funktionen – Hibernate Supports both hbm.xml and JPA HQL/JPA-QL query and Criteria prototyping Java inline query code completion and query validation Mapping visualization Reverse engineering from database schema Flexible code generation
PFH-Technologie-Forum JBoss Tools Funktionen JBPM visual editing Restart by Touch Struts 1.x Project explorer navigation and direct editing
PFH-Technologie-Forum JBoss Tools – Developer Studio
PFH-Technologie-Forum Portal – Portlet 2.0 Portlet 1.0 Spezifikation: Finalisiert im Oktober 2003 Breite Anwendung (IBM, SAS, Oracle, usw.) Im Java EE Stack integriert, aber kein Teil davon
PFH-Technologie-Forum Portal – Portlet 2.0 Portlet 2.0 Spezifikation: Gestartet am 29. November 2005 Leitung bei IBM Beteiligung von allen namhaften Portal Herstellern Mehr Info unter Final draft liegt im Moment bei der JCP (Java Community Process)
PFH-Technologie-Forum Portal – Portlet 2.0 JBoss Portlet Container 2.0 Läuft unter jedem App Server Public Render Parameter Resource Serving (z.b. PDF, Office Docs, usw.) Annotations Portlet Filter And many more...
PFH-Technologie-Forum Hibernate Search Frankly, search sucks on this project -- Anonymous boss
PFH-Technologie-Forum Hibernate Search Under the Hibernate platform LGPL Built on top of Hibernate Core Use Apache Lucene(tm) under the hood In top 10 downloaded at Apache Very powerful Somewhat low level easy to use it the wrong way Solve the mismatches
PFH-Technologie-Forum Hibernate Search
PFH-Technologie-Forum Fragen ?