SlideShare ist ein Scribd-Unternehmen logo
1 von 35
Downloaden Sie, um offline zu lesen
g        GFU Cyrus AG
Ihr Partner für IT Schulung




      "Semicolon" Vortragsreihe bei der GFU
                              Vortrag am Dienstag, 09. Juni 2009


                                           Thema

                     Die Leichtigkeit der Softwareentwicklung
                Stärken und Schwächen der neuen Spezifikation Java EE 6
                                         Einführung

                              Peter Hecker, GFU Cyrus AG
                                           Vortrag

                              Dirk Weil, GEDOPLAN GmbH
Entwicklung von Informationssystemen
29 Jahre am Markt
~35 Mitarbeiter
Beratung und Entwicklung
Konventionelle und
                                           GEDOPLAN
neue Technologien
Maßgeschneiderte Lösungen   Objektorientierte Softwareentwicklung
Standardsoftware
                                                                    SAP®
                             SOA            Java           .NET
Seit 1998 im Bereich Java:
   50+ Beratungs- und Entwicklungsprojekte
   Konzeption und Entwicklung
   30+ Seminartitel
                                                  GEDOPLAN
   Java / Java EE
   Diverse App.-Server         Objektorientierte Softwareentwicklung
       Glassfish
       IBM WebSphere
       JBoss                                                           SAP®
       Oracle WebLogic                SOA         Java         .NET
       SAP NetWeaver
IT-Systeme und Prozesse
Beratung, Schulung, Entwicklung
100+ Mitarbeiter
www.involva-gruppe.de
Die Leichtigkeit der Softwareentwicklung


             Stärken und Schwächen der neuen Spezifikation Java EE 6



             Enterprise Java Team, GEDOPLAN GmbH
2009-06-09
Java Enterprise Edition




                      technische Basis                                                   Komfort

     J2EE1.0           J2EE 1.2     J2EE 1.3 J2EE 1.4                     JEE 5                           JEE 6


     1998      1999      2000     2001   2002     2003   2004   2005   2006       2007    2008     2009




  Produktivstand

                                                                                                                  6
Java Enterprise Edition
  J2EE 1.4
     schwergewichtig
     viele XML-Descriptoren

  Java EE 5
      POJOs, IoC / DI
      Configuration by Exception
      Java-5-Annotationen statt XML

  Java EE 6
      Fortsetzung des Trends zur Einfachheit
      Diverse "Wunscherfüllungen"


                                               7
Servlet 3.0: Konfiguration mit Annotationen

  Bisher Registrierung in web.xml
   public class SimpleServlet extends HttpServlet
   {
     protected void doGet(HttpServletRequest request,
                           HttpServletResponse response)
     {
       …
         <web-app>
           <servlet>
             <servlet-name>SimpleServlet</servlet-name>
             <servlet-class>de.gedoplan.demo.SimpleServlet</servlet-class>
           </servlet>
           <servlet-mapping>
             <servlet-name>SimpleServlet</servlet-name>
             <url-pattern>/demo/SimpleServlet</url-pattern>
           </servlet-mapping>
           …




                                                                         8
Servlet 3.0: Konfiguration mit Annotationen

  Registrierung per Annotation
   @WebServlet(name="SimpleServlet",
   urlPatterns={"/demo/SimpleServlet"})
   public class SimpleServlet extends HttpServlet
   {
     protected void doGet(HttpServletRequest request,
                          HttpServletResponse response)
     {
       …



  Auch für:
     Init-Parameter
     Servlet Filter
     Context Listener
                                                          9
Aber: Servlets sind keine POJOs!

  Servlet-Klasse implementiert HttpServlet
  Alternative Jersey/JAX-RS
   @Path("/demo/SimpleServlet"})
   public class SimpleServlet
   {
     @Get
     @Produces("text/plain")
     public String getMessage()
     {
       return "Hello, world";




                                             10
JSF 2.0: Konfiguration mit Annotationen

    Bisher Deklaration von Managed Beans in faces-config.xml
public class DemoBean
{
  private double steuerSatz = 0.19;

 public double getSteuerSatz()
 {
   return steuerSatz;
 }
     <faces-config>
 ...   <managed-bean>
         <description>DemoBean</description>
         <managed-bean-name>demoBean</managed-bean-name>
         <managed-bean-class>de.gedoplan.demo.DemoBean</managed-bean-class>
         <managed-bean-scope>request</managed-bean-scope>
       </managed-bean>
     </faces-config>




                                                                         11
JSF 2.0: Konfiguration mit Annotationen

  Deklaration von Managed Beans per Annotation
   @ManagedBean(name = "demoBean")
   @RequestScoped
   public class DemoBean
   {
     private double steuerSatz = 0.19;

    public double getSteuerSatz()
    {
      return steuerSatz;
    }

    ...




                                                 12
JSF 2.0: Konfiguration mit Annotationen

  Annotation auch für:
     Managed Properties      @ManagedProperty(value=”#{barBean}”)
                             private BarBean barBean;
     Converter
     Validatoren
     Renderer
     Lifecycle




                                                                13
JSF 2.0: faces-config.xml

  ist optional
  überschreibt Annotationen
  weiterhin für
      Anwendungsparameter wie Lokalisierung, Phase Listeners etc.
      Navigationsregeln




                                                                    14
EJB 3.1: No Interface Beans

  Bis EJB 3.0: Obligatorisches Local oder Remote Interface
   @Stateless
   public class ArbeitsplatzDaoBean implements ArbeitsplatzDao
   {
     public void insert(Arbeitsplatz entity) { … }
     public void update(Arbeitsplatz entity) { … }
     …
                 @Local
                 public interface ArbeitsplatzDao
                 {
                   public void insert(Arbeitsplatz entity);
                   public void update(Arbeitsplatz entity);
                   …




  Für rein interne Nutzung (Local!) lästig


                                                                 15
EJB 3.1: No Interface Beans

    Interfaces sind nun optional.
    Wenn kein Interface deklariert:
        Container stellt Referenz-Objekt (Proxy) zur Verfügung
        Proxy enthält alle öffentlichen Methoden der Bean.
        Proxy ist von der Bean-Klasse abgeleitet.
        Nutzung (z.B.) aus anderen EJBs über den Typ der Bean-Klasse.
@Stateless
public class ArbeitsplatzDaoBean
{                                         @Stateless
  public void insert(Arbeitsplatz entity) { … } class SomeOtherBean
                                          public
  public void update(Arbeitsplatz entity) { … }
                                          {
  …                                         @EJB
                                            private ArbeitsplatzDaoBean dao;
                                            …



                                                                          16
EJB 3.1: No Interface Beans

  Erstellung des No-Interface-Referenzobjekts auch zusätzlich mit
  @LocalBean
  Achtung: Alle öffentlichen Methoden sind zugreifbar!
  Aufruf nicht-öffentlicher Methoden wirft Exception.




                                                                    17
EJB 3.1: Singletons

  Genau eine Bean-Instanz pro JVM.
  Neue Annotation für Session Beans: @Singleton.
   @Singleton
   public class SomeBean
   {
     …




                                                   18
EJB 3.1: Singletons

  Lebenszyklus wird durch den Container gesteuert.
  @Startup erzwingt
                                    @Singleton
  Instanziierung beim               @Startup
  Applikationsstart.                public class A {   … }

  @DependsOn definiert              @Singleton
                                    public class B {   … }
  Abhängigkeiten für die
  Instanziierung.                   @Singleton
                                     @DependsOn("B")
                                     public class C { … }

                                     @Singleton
                                     @Startup
                                     @DependsOn({"A", "B"})
                                     public class E { … }



                                                              19
EJB 3.1: Singletons

  Unterstützt nebenläufigen Zugriff (Concurrent Access).
  CMC (Container Managed Concurrency, Default)
     Container kontrolliert und regelt den Zugriff.
     Steuerung durch @READ und @WRITE (Default).
     @AccessTimeout für Limitierung der Blockade.

  BMC (Bean Managed Concurrency)
    Entwickler muss synchronized, volatile etc. einsetzen.




                                                           20
EJB 3.1: Singletons

   Concurrency Strategy: Beispiele
@Singleton
@ConcurrencyManagement(CONTAINER)
public class A { ... }               @Singleton
                                     @Lock(READ)
@Singleton                           public class D
@Lock(WRITE)                         {
public class B { ... }               ...

@Singleton                             @Lock(WRITE)
@Lock(READ)                            public String sayBye() { ... }
public class C { ... }               ...
                                     }

                                     @Singleton
                                     @AccessTimeout(10000)
                                     public class E { ... }




                                                                        21
EJB 3.1: Singletons

  Singletons sind statusbehaftet.
  Status besteht bis zum Applikationsende (Shutdown/Undeploy).
  Im Clusterbetrieb gibt es pro JVM eine Singleton-Instanz.
  System Exceptions führen nicht zur Zerstörung.




                                                                 22
EJB 3.1: Timer

  Timer Service wurde von EJB 2.1 mit beschränkter Funktionalität
  eingeführt:
     Alle Timer müssen programmatisch erzeugt werden.
     Unflexibles Scheduling der Timer.
     Kein Cluster-Support.




                                                                    23
EJB 3.1: Timer

  Programmatische Instanziierung durch erweitertes Interface
  TimerService.
  Deklarative Instanziierung durch Annotationen.
  Timer können persistent gehalten werden.
  Timer sind nun cluster-fähig.
     Nicht-persistente Timer 1 x pro JVM.
     Persistente Timer 1 x pro Cluster.




                                                               24
EJB 3.1: Timer

  @Schedule steuert Erzeugung und Intervalle.
  @Schedule wird auf Timeout-Callback-Methoden angewandt.

    @Stateless
    public class TimerEJB
    {
      @Schedule(dayOfWeek="Mon")
      public void itIsMonday(Timer timer) { … }

      @Schedule(dayOfMonth="Last")
      public void itIsEndOfMonth(Timer timer) {
    … }
    }




                                                            25
EJB 3.1: Timer

  Eine Methode kann auch mit mehreren Timern ausgestattet werden
  Umfangreiche Erweiterung der Schedule-Terminologie
  // Every Tuesday at 7.30am
  @Schedule(hour = "7", minute = "30", dayOfWeek = "Tue")

  // From Monday to Friday, at 7, 15 and 20
  @Schedule(hour = "7, 15, 20", dayOfWeek = "Mon-Fri")

  // Every hour on Sundays
  @Schedule(hour = "*", dayOfWeek = "0")

  // Last Friday of December, at 12
  @Schedule(hour = "12", dayOfMonth = "Last Fri", month="Dec")

  // Three days before the last day of the month, for every month of 2009, at 8pm
  @Schedule(hour = "20", dayOfMonth = "-3", year="2009")

  // Every 5 minutes of every hour, starting at 3pm
  @Schedule(minute = "*/5", hour = "15/1")



                                                                                    26
EJB 3.1: Asynchrone Session-Bean-Methoden

  Session Beans unterstützen asynchronen Methodenaufruf.
  Kontrolle wird dem Client zurückgegeben werden, bevor der
  Container den Aufruf an die Bean-Instanz weiterleitet.
  Es können vom Client parallele (nebenläufige) Prozesse angestoßen
  werden.




                                                                 27
EJB 3.1: Asynchrone Session-Bean-Methoden

  Asynchrone Methoden werden durch die @Asynchronous
  gekennzeichnet.
  Sowohl Klassen, als auch Methoden können annotiert werden.
  Rückgabe-Typ asynchroner Methoden:
     void                     @Stateless
                              public class C implements CLocal { …   }
     Future<V>
                               @Local
                               public interface CLocal
                               {
                                 @Asynchronous
                                 public void flushBye();
                               }




                                                                         28
JPA 2.0: Weitere Mapping-Optionen

  Abbildung von Collections (ohne explizite Relation)
  Neue Annotation dafür: @ElementCollection.
   @Entity
   public class Person
   {
     @ElementCollection
     private Set<String> hobbies;


  Auch nutzbar für einbettbare Elemente (@Embeddable).

  Realisierung wie Relation mit Primärschlüssel-Join.



                                                         29
JPA 2.0: Weitere Mapping-Optionen
                             @Entity
                             public class Vehicle
   Relationen auf einge-     {
                               @Id
   bettete Objekte             int vehicleId;

                              @Embedded
                              PurchaseInfo purchaseInfo;
 @Embeddable
 public class PurchaseInfo    …
 {
   int price;

  @Temporal(DATE)              @Entity
  @Column(name=”PUR_DATE”)     public class Dealer
  Date purchaseDate;           {
                                 @Id
  @ManyToOne                     int dealerId;
  Dealer dealer;
                                  @OneToMany(mappedBy=”purchaseInfo.dealer”)
  …                               Collection<Vehicle> vehiclesSold;

                                  …




                                                                               30
JPA 2.0: Weitere Mapping-Optionen

  Unidirectional One-to-Many mit einem Foreign Key

   @Entity
   public class Vehicle
   {
     @Id
     private int vehicleId;

    @OneToMany
    private Set<Part> parts;

    …




                                                     31
JPA 2.0: Relationsfelder im Primärschlüssel

  In manchen Fällen, insbesondere bei der Integration von Alt-
  Systemen (lagacy databases) ist es notwendig, Primärschlüssel mit
  Fremdschlüssel einer anderen Tabelle zu realisieren…




                                                                  32
JPA 2.0: Relationsfelder im Primärschlüssel

  Beispiel:
                                public class ProjectId
                                {
    @Entity                       String name;
    @IdClass(ProjectId.class)     int dept;
    public class Project          …
    {                           }
      @Id
      String name;

     @Id
     @ManyToOne
     @JoinColumn(name=”D_ID”)
     Department dept;

     …                          @Entity
                                public class Department
                                {
                                  @Id
                                  int id;
                                  …




                                                          33
Fazit

  Trend zur Vereinfachung setzt sich fort
     Annotationen statt XML
     Configuration by Exception

  Viele nützliche Erweiterungen
      Singletons
      Asnchrone Methoden
      Timer

  Lohnt sich!


                                            34
Danke für Ihre Aufmerksamkeit!
      Haben Sie Fragen?

Weitere ähnliche Inhalte

Was ist angesagt?

Introduction to JEE
Introduction to JEEIntroduction to JEE
Introduction to JEEguestc44b7b
 
Javamagazin 1.2016 jdk9_ea_b83_jigsaw
Javamagazin 1.2016 jdk9_ea_b83_jigsawJavamagazin 1.2016 jdk9_ea_b83_jigsaw
Javamagazin 1.2016 jdk9_ea_b83_jigsawWolfgang Weigend
 
Requirements Engineering in agilen Projekten - Flexibilität ist gefordert
Requirements Engineering in agilen Projekten - Flexibilität ist gefordertRequirements Engineering in agilen Projekten - Flexibilität ist gefordert
Requirements Engineering in agilen Projekten - Flexibilität ist gefordertGFU Cyrus AG
 
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)Wiest Simon
 
Continuous Integration mit Hudson (JUG Mannheim, 27.01.2010)
Continuous Integration mit Hudson (JUG Mannheim, 27.01.2010)Continuous Integration mit Hudson (JUG Mannheim, 27.01.2010)
Continuous Integration mit Hudson (JUG Mannheim, 27.01.2010)Wiest Simon
 
Der Application Server ist tot (?) - es lebe Jakarta EE!
Der Application Server ist tot (?) - es lebe Jakarta EE!Der Application Server ist tot (?) - es lebe Jakarta EE!
Der Application Server ist tot (?) - es lebe Jakarta EE!gedoplan
 
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtAutomatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtOPITZ CONSULTING Deutschland
 
An Introduction to Ruby On Rails
An Introduction to Ruby On RailsAn Introduction to Ruby On Rails
An Introduction to Ruby On RailsJonathan Weiss
 
Article - JDK 8 im Fokus der Entwickler
Article - JDK 8 im Fokus der EntwicklerArticle - JDK 8 im Fokus der Entwickler
Article - JDK 8 im Fokus der EntwicklerWolfgang Weigend
 
Introduction to Apache Maven 3 (German)
Introduction to Apache Maven 3 (German)Introduction to Apache Maven 3 (German)
Introduction to Apache Maven 3 (German)Chris Michael Klinger
 

Was ist angesagt? (13)

Introduction to JEE
Introduction to JEEIntroduction to JEE
Introduction to JEE
 
Javamagazin 1.2016 jdk9_ea_b83_jigsaw
Javamagazin 1.2016 jdk9_ea_b83_jigsawJavamagazin 1.2016 jdk9_ea_b83_jigsaw
Javamagazin 1.2016 jdk9_ea_b83_jigsaw
 
Requirements Engineering in agilen Projekten - Flexibilität ist gefordert
Requirements Engineering in agilen Projekten - Flexibilität ist gefordertRequirements Engineering in agilen Projekten - Flexibilität ist gefordert
Requirements Engineering in agilen Projekten - Flexibilität ist gefordert
 
Iks Sonderdruck Eclipse Magazin Mai 2010: Automatisierte SWTBot-Tests
Iks Sonderdruck Eclipse Magazin Mai 2010: Automatisierte SWTBot-TestsIks Sonderdruck Eclipse Magazin Mai 2010: Automatisierte SWTBot-Tests
Iks Sonderdruck Eclipse Magazin Mai 2010: Automatisierte SWTBot-Tests
 
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
 
Continuous Integration mit Hudson (JUG Mannheim, 27.01.2010)
Continuous Integration mit Hudson (JUG Mannheim, 27.01.2010)Continuous Integration mit Hudson (JUG Mannheim, 27.01.2010)
Continuous Integration mit Hudson (JUG Mannheim, 27.01.2010)
 
Einführung Maven
Einführung MavenEinführung Maven
Einführung Maven
 
Der Application Server ist tot (?) - es lebe Jakarta EE!
Der Application Server ist tot (?) - es lebe Jakarta EE!Der Application Server ist tot (?) - es lebe Jakarta EE!
Der Application Server ist tot (?) - es lebe Jakarta EE!
 
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtAutomatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
 
An Introduction to Ruby On Rails
An Introduction to Ruby On RailsAn Introduction to Ruby On Rails
An Introduction to Ruby On Rails
 
PLUX.NET – SOFTWAREKOMPOSITION DURCH PLUG & PLAY
PLUX.NET – SOFTWAREKOMPOSITION DURCH PLUG & PLAYPLUX.NET – SOFTWAREKOMPOSITION DURCH PLUG & PLAY
PLUX.NET – SOFTWAREKOMPOSITION DURCH PLUG & PLAY
 
Article - JDK 8 im Fokus der Entwickler
Article - JDK 8 im Fokus der EntwicklerArticle - JDK 8 im Fokus der Entwickler
Article - JDK 8 im Fokus der Entwickler
 
Introduction to Apache Maven 3 (German)
Introduction to Apache Maven 3 (German)Introduction to Apache Maven 3 (German)
Introduction to Apache Maven 3 (German)
 

Ähnlich wie Neue Features der Java EE 6

Java EE 6/7 - Enterprise-Anwendungsentwicklung leicht gemacht
Java EE 6/7 - Enterprise-Anwendungsentwicklung leicht gemachtJava EE 6/7 - Enterprise-Anwendungsentwicklung leicht gemacht
Java EE 6/7 - Enterprise-Anwendungsentwicklung leicht gemachtgedoplan
 
JBoss AS / EAP Clustering
JBoss AS / EAP  ClusteringJBoss AS / EAP  Clustering
JBoss AS / EAP Clusteringhwilming
 
Feige sein! Testen im Java-EE-Umfeld
Feige sein! Testen im Java-EE-UmfeldFeige sein! Testen im Java-EE-Umfeld
Feige sein! Testen im Java-EE-Umfeldgedoplan
 
Schneller, besser, sparsamer - JBoss 7
Schneller, besser, sparsamer -  JBoss 7Schneller, besser, sparsamer -  JBoss 7
Schneller, besser, sparsamer - JBoss 7gedoplan
 
JSUG - OSGi by Michael Greifeneder
JSUG - OSGi by Michael GreifenederJSUG - OSGi by Michael Greifeneder
JSUG - OSGi by Michael GreifenederChristoph Pickl
 
EnterJS 2015 - JavaScript von Morgen schon heute
EnterJS 2015 - JavaScript von Morgen schon heuteEnterJS 2015 - JavaScript von Morgen schon heute
EnterJS 2015 - JavaScript von Morgen schon heutePhilipp Burgmer
 
Lightweight AOP with CDI and JPA
Lightweight AOP with CDI and JPALightweight AOP with CDI and JPA
Lightweight AOP with CDI and JPAmh0708
 
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)Michael Kurz
 
Funktionale Reaktive Programmierung mit Sodium
Funktionale Reaktive Programmierung mit SodiumFunktionale Reaktive Programmierung mit Sodium
Funktionale Reaktive Programmierung mit SodiumTorsten Fink
 
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...gedoplan
 
Jakarta EE 10: Was gibt es Neues?
Jakarta EE 10: Was gibt es Neues?Jakarta EE 10: Was gibt es Neues?
Jakarta EE 10: Was gibt es Neues?gedoplan
 
Java EE 7 - Enterprise-Anwendungen ohne Ballast
Java EE 7 - Enterprise-Anwendungen ohne BallastJava EE 7 - Enterprise-Anwendungen ohne Ballast
Java EE 7 - Enterprise-Anwendungen ohne Ballastgedoplan
 
2009 03 17 Spring101
2009 03 17 Spring1012009 03 17 Spring101
2009 03 17 Spring101gueste4be40
 
MicroProfile-Anwendungen mit Quarkus
MicroProfile-Anwendungen mit QuarkusMicroProfile-Anwendungen mit Quarkus
MicroProfile-Anwendungen mit Quarkusgedoplan
 
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und AusblickTaugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und AusblickPhilipp Burgmer
 
Jalimo Slides Linuxtag2007
Jalimo Slides Linuxtag2007Jalimo Slides Linuxtag2007
Jalimo Slides Linuxtag2007smancke
 
Jbossas7alsplattformmodernerenterprise anwendungen-130604114410-phpapp02
Jbossas7alsplattformmodernerenterprise anwendungen-130604114410-phpapp02Jbossas7alsplattformmodernerenterprise anwendungen-130604114410-phpapp02
Jbossas7alsplattformmodernerenterprise anwendungen-130604114410-phpapp02Java Usergroup Berlin-Brandenburg
 

Ähnlich wie Neue Features der Java EE 6 (20)

Java EE 6/7 - Enterprise-Anwendungsentwicklung leicht gemacht
Java EE 6/7 - Enterprise-Anwendungsentwicklung leicht gemachtJava EE 6/7 - Enterprise-Anwendungsentwicklung leicht gemacht
Java EE 6/7 - Enterprise-Anwendungsentwicklung leicht gemacht
 
JBoss AS / EAP Clustering
JBoss AS / EAP  ClusteringJBoss AS / EAP  Clustering
JBoss AS / EAP Clustering
 
Feige sein! Testen im Java-EE-Umfeld
Feige sein! Testen im Java-EE-UmfeldFeige sein! Testen im Java-EE-Umfeld
Feige sein! Testen im Java-EE-Umfeld
 
Schneller, besser, sparsamer - JBoss 7
Schneller, besser, sparsamer -  JBoss 7Schneller, besser, sparsamer -  JBoss 7
Schneller, besser, sparsamer - JBoss 7
 
JSUG - OSGi by Michael Greifeneder
JSUG - OSGi by Michael GreifenederJSUG - OSGi by Michael Greifeneder
JSUG - OSGi by Michael Greifeneder
 
Spring 2.0
Spring 2.0Spring 2.0
Spring 2.0
 
EnterJS 2015 - JavaScript von Morgen schon heute
EnterJS 2015 - JavaScript von Morgen schon heuteEnterJS 2015 - JavaScript von Morgen schon heute
EnterJS 2015 - JavaScript von Morgen schon heute
 
Lightweight AOP with CDI and JPA
Lightweight AOP with CDI and JPALightweight AOP with CDI and JPA
Lightweight AOP with CDI and JPA
 
TDD für Testmuffel
TDD für TestmuffelTDD für Testmuffel
TDD für Testmuffel
 
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
 
Funktionale Reaktive Programmierung mit Sodium
Funktionale Reaktive Programmierung mit SodiumFunktionale Reaktive Programmierung mit Sodium
Funktionale Reaktive Programmierung mit Sodium
 
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
 
Jakarta EE 10: Was gibt es Neues?
Jakarta EE 10: Was gibt es Neues?Jakarta EE 10: Was gibt es Neues?
Jakarta EE 10: Was gibt es Neues?
 
Java EE 7 - Enterprise-Anwendungen ohne Ballast
Java EE 7 - Enterprise-Anwendungen ohne BallastJava EE 7 - Enterprise-Anwendungen ohne Ballast
Java EE 7 - Enterprise-Anwendungen ohne Ballast
 
DOAG 2010: ADF Faces RC Best Practice
DOAG 2010: ADF Faces RC Best PracticeDOAG 2010: ADF Faces RC Best Practice
DOAG 2010: ADF Faces RC Best Practice
 
2009 03 17 Spring101
2009 03 17 Spring1012009 03 17 Spring101
2009 03 17 Spring101
 
MicroProfile-Anwendungen mit Quarkus
MicroProfile-Anwendungen mit QuarkusMicroProfile-Anwendungen mit Quarkus
MicroProfile-Anwendungen mit Quarkus
 
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und AusblickTaugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
 
Jalimo Slides Linuxtag2007
Jalimo Slides Linuxtag2007Jalimo Slides Linuxtag2007
Jalimo Slides Linuxtag2007
 
Jbossas7alsplattformmodernerenterprise anwendungen-130604114410-phpapp02
Jbossas7alsplattformmodernerenterprise anwendungen-130604114410-phpapp02Jbossas7alsplattformmodernerenterprise anwendungen-130604114410-phpapp02
Jbossas7alsplattformmodernerenterprise anwendungen-130604114410-phpapp02
 

Mehr von GFU Cyrus AG

Social Media im Unternehmen
Social Media im UnternehmenSocial Media im Unternehmen
Social Media im UnternehmenGFU Cyrus AG
 
Clean Code Developer
Clean Code DeveloperClean Code Developer
Clean Code DeveloperGFU Cyrus AG
 
Datenschutz bei Facebook & Co. - Wie schütze ich meine persönlichen Daten im ...
Datenschutz bei Facebook & Co. - Wie schütze ich meine persönlichen Daten im ...Datenschutz bei Facebook & Co. - Wie schütze ich meine persönlichen Daten im ...
Datenschutz bei Facebook & Co. - Wie schütze ich meine persönlichen Daten im ...GFU Cyrus AG
 
SharePoint 2010 - Was ist neu, was wird besser!
SharePoint 2010 - Was ist neu, was wird besser!SharePoint 2010 - Was ist neu, was wird besser!
SharePoint 2010 - Was ist neu, was wird besser!GFU Cyrus AG
 
Java Persistence 2.0
Java Persistence 2.0Java Persistence 2.0
Java Persistence 2.0GFU Cyrus AG
 
Pragmatische Einführung von IT-Servicemanagement - ITIL im Unternehmen - Erfa...
Pragmatische Einführung von IT-Servicemanagement - ITIL im Unternehmen - Erfa...Pragmatische Einführung von IT-Servicemanagement - ITIL im Unternehmen - Erfa...
Pragmatische Einführung von IT-Servicemanagement - ITIL im Unternehmen - Erfa...GFU Cyrus AG
 
Liferay Portal - ein Webportal für viele Unternehmensanforderungen
Liferay Portal - ein Webportal für viele UnternehmensanforderungenLiferay Portal - ein Webportal für viele Unternehmensanforderungen
Liferay Portal - ein Webportal für viele UnternehmensanforderungenGFU Cyrus AG
 
PostgreSQL im Produktivbetrieb
PostgreSQL im ProduktivbetriebPostgreSQL im Produktivbetrieb
PostgreSQL im ProduktivbetriebGFU Cyrus AG
 
Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Weba...
Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Weba...Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Weba...
Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Weba...GFU Cyrus AG
 
Wieviel Web2.0 braucht Ihr Unternehmen?
Wieviel Web2.0 braucht Ihr Unternehmen?Wieviel Web2.0 braucht Ihr Unternehmen?
Wieviel Web2.0 braucht Ihr Unternehmen?GFU Cyrus AG
 
Das Java-Spring-Framework in der Praxis
Das Java-Spring-Framework in der PraxisDas Java-Spring-Framework in der Praxis
Das Java-Spring-Framework in der PraxisGFU Cyrus AG
 
Agile Geschäftsprozeßanalyse OOA/D am Beispiel einer Seminarverwaltung
Agile Geschäftsprozeßanalyse OOA/D am Beispiel einer SeminarverwaltungAgile Geschäftsprozeßanalyse OOA/D am Beispiel einer Seminarverwaltung
Agile Geschäftsprozeßanalyse OOA/D am Beispiel einer SeminarverwaltungGFU Cyrus AG
 
Wissensmanagement bei Volkswagen
Wissensmanagement bei VolkswagenWissensmanagement bei Volkswagen
Wissensmanagement bei VolkswagenGFU Cyrus AG
 
Professionelle Anforderungsanalyse am Beispiel einer Java-Anwendung zur Betri...
Professionelle Anforderungsanalyse am Beispiel einer Java-Anwendung zur Betri...Professionelle Anforderungsanalyse am Beispiel einer Java-Anwendung zur Betri...
Professionelle Anforderungsanalyse am Beispiel einer Java-Anwendung zur Betri...GFU Cyrus AG
 
Grenzüberschreitende Geschäftsprozesse mit Microsoft SharePoint und BizTalk
Grenzüberschreitende Geschäftsprozesse mit Microsoft SharePoint und BizTalkGrenzüberschreitende Geschäftsprozesse mit Microsoft SharePoint und BizTalk
Grenzüberschreitende Geschäftsprozesse mit Microsoft SharePoint und BizTalkGFU Cyrus AG
 
Projekt! - Toll - Ein Anderer Macht`s! - Voraussetzungen für eine erfolgreich...
Projekt! - Toll - Ein Anderer Macht`s! - Voraussetzungen für eine erfolgreich...Projekt! - Toll - Ein Anderer Macht`s! - Voraussetzungen für eine erfolgreich...
Projekt! - Toll - Ein Anderer Macht`s! - Voraussetzungen für eine erfolgreich...GFU Cyrus AG
 
Standardsoftware in der Versicherungsbranche - Betrachtung eines Paradigmenwe...
Standardsoftware in der Versicherungsbranche - Betrachtung eines Paradigmenwe...Standardsoftware in der Versicherungsbranche - Betrachtung eines Paradigmenwe...
Standardsoftware in der Versicherungsbranche - Betrachtung eines Paradigmenwe...GFU Cyrus AG
 
E-Learning mit Moodle
E-Learning mit MoodleE-Learning mit Moodle
E-Learning mit MoodleGFU Cyrus AG
 
LINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NETLINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NETGFU Cyrus AG
 
Java oberflächlich betrachtet - Welche GUI ist die richtige?
Java oberflächlich betrachtet - Welche GUI ist die richtige?Java oberflächlich betrachtet - Welche GUI ist die richtige?
Java oberflächlich betrachtet - Welche GUI ist die richtige?GFU Cyrus AG
 

Mehr von GFU Cyrus AG (20)

Social Media im Unternehmen
Social Media im UnternehmenSocial Media im Unternehmen
Social Media im Unternehmen
 
Clean Code Developer
Clean Code DeveloperClean Code Developer
Clean Code Developer
 
Datenschutz bei Facebook & Co. - Wie schütze ich meine persönlichen Daten im ...
Datenschutz bei Facebook & Co. - Wie schütze ich meine persönlichen Daten im ...Datenschutz bei Facebook & Co. - Wie schütze ich meine persönlichen Daten im ...
Datenschutz bei Facebook & Co. - Wie schütze ich meine persönlichen Daten im ...
 
SharePoint 2010 - Was ist neu, was wird besser!
SharePoint 2010 - Was ist neu, was wird besser!SharePoint 2010 - Was ist neu, was wird besser!
SharePoint 2010 - Was ist neu, was wird besser!
 
Java Persistence 2.0
Java Persistence 2.0Java Persistence 2.0
Java Persistence 2.0
 
Pragmatische Einführung von IT-Servicemanagement - ITIL im Unternehmen - Erfa...
Pragmatische Einführung von IT-Servicemanagement - ITIL im Unternehmen - Erfa...Pragmatische Einführung von IT-Servicemanagement - ITIL im Unternehmen - Erfa...
Pragmatische Einführung von IT-Servicemanagement - ITIL im Unternehmen - Erfa...
 
Liferay Portal - ein Webportal für viele Unternehmensanforderungen
Liferay Portal - ein Webportal für viele UnternehmensanforderungenLiferay Portal - ein Webportal für viele Unternehmensanforderungen
Liferay Portal - ein Webportal für viele Unternehmensanforderungen
 
PostgreSQL im Produktivbetrieb
PostgreSQL im ProduktivbetriebPostgreSQL im Produktivbetrieb
PostgreSQL im Produktivbetrieb
 
Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Weba...
Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Weba...Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Weba...
Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Weba...
 
Wieviel Web2.0 braucht Ihr Unternehmen?
Wieviel Web2.0 braucht Ihr Unternehmen?Wieviel Web2.0 braucht Ihr Unternehmen?
Wieviel Web2.0 braucht Ihr Unternehmen?
 
Das Java-Spring-Framework in der Praxis
Das Java-Spring-Framework in der PraxisDas Java-Spring-Framework in der Praxis
Das Java-Spring-Framework in der Praxis
 
Agile Geschäftsprozeßanalyse OOA/D am Beispiel einer Seminarverwaltung
Agile Geschäftsprozeßanalyse OOA/D am Beispiel einer SeminarverwaltungAgile Geschäftsprozeßanalyse OOA/D am Beispiel einer Seminarverwaltung
Agile Geschäftsprozeßanalyse OOA/D am Beispiel einer Seminarverwaltung
 
Wissensmanagement bei Volkswagen
Wissensmanagement bei VolkswagenWissensmanagement bei Volkswagen
Wissensmanagement bei Volkswagen
 
Professionelle Anforderungsanalyse am Beispiel einer Java-Anwendung zur Betri...
Professionelle Anforderungsanalyse am Beispiel einer Java-Anwendung zur Betri...Professionelle Anforderungsanalyse am Beispiel einer Java-Anwendung zur Betri...
Professionelle Anforderungsanalyse am Beispiel einer Java-Anwendung zur Betri...
 
Grenzüberschreitende Geschäftsprozesse mit Microsoft SharePoint und BizTalk
Grenzüberschreitende Geschäftsprozesse mit Microsoft SharePoint und BizTalkGrenzüberschreitende Geschäftsprozesse mit Microsoft SharePoint und BizTalk
Grenzüberschreitende Geschäftsprozesse mit Microsoft SharePoint und BizTalk
 
Projekt! - Toll - Ein Anderer Macht`s! - Voraussetzungen für eine erfolgreich...
Projekt! - Toll - Ein Anderer Macht`s! - Voraussetzungen für eine erfolgreich...Projekt! - Toll - Ein Anderer Macht`s! - Voraussetzungen für eine erfolgreich...
Projekt! - Toll - Ein Anderer Macht`s! - Voraussetzungen für eine erfolgreich...
 
Standardsoftware in der Versicherungsbranche - Betrachtung eines Paradigmenwe...
Standardsoftware in der Versicherungsbranche - Betrachtung eines Paradigmenwe...Standardsoftware in der Versicherungsbranche - Betrachtung eines Paradigmenwe...
Standardsoftware in der Versicherungsbranche - Betrachtung eines Paradigmenwe...
 
E-Learning mit Moodle
E-Learning mit MoodleE-Learning mit Moodle
E-Learning mit Moodle
 
LINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NETLINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NET
 
Java oberflächlich betrachtet - Welche GUI ist die richtige?
Java oberflächlich betrachtet - Welche GUI ist die richtige?Java oberflächlich betrachtet - Welche GUI ist die richtige?
Java oberflächlich betrachtet - Welche GUI ist die richtige?
 

Neue Features der Java EE 6

  • 1. g GFU Cyrus AG Ihr Partner für IT Schulung "Semicolon" Vortragsreihe bei der GFU Vortrag am Dienstag, 09. Juni 2009 Thema Die Leichtigkeit der Softwareentwicklung Stärken und Schwächen der neuen Spezifikation Java EE 6 Einführung Peter Hecker, GFU Cyrus AG Vortrag Dirk Weil, GEDOPLAN GmbH
  • 2. Entwicklung von Informationssystemen 29 Jahre am Markt ~35 Mitarbeiter Beratung und Entwicklung Konventionelle und GEDOPLAN neue Technologien Maßgeschneiderte Lösungen Objektorientierte Softwareentwicklung Standardsoftware SAP® SOA Java .NET
  • 3. Seit 1998 im Bereich Java: 50+ Beratungs- und Entwicklungsprojekte Konzeption und Entwicklung 30+ Seminartitel GEDOPLAN Java / Java EE Diverse App.-Server Objektorientierte Softwareentwicklung Glassfish IBM WebSphere JBoss SAP® Oracle WebLogic SOA Java .NET SAP NetWeaver
  • 4. IT-Systeme und Prozesse Beratung, Schulung, Entwicklung 100+ Mitarbeiter www.involva-gruppe.de
  • 5. Die Leichtigkeit der Softwareentwicklung Stärken und Schwächen der neuen Spezifikation Java EE 6 Enterprise Java Team, GEDOPLAN GmbH 2009-06-09
  • 6. Java Enterprise Edition technische Basis Komfort J2EE1.0 J2EE 1.2 J2EE 1.3 J2EE 1.4 JEE 5 JEE 6 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 Produktivstand 6
  • 7. Java Enterprise Edition J2EE 1.4 schwergewichtig viele XML-Descriptoren Java EE 5 POJOs, IoC / DI Configuration by Exception Java-5-Annotationen statt XML Java EE 6 Fortsetzung des Trends zur Einfachheit Diverse "Wunscherfüllungen" 7
  • 8. Servlet 3.0: Konfiguration mit Annotationen Bisher Registrierung in web.xml public class SimpleServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) { … <web-app> <servlet> <servlet-name>SimpleServlet</servlet-name> <servlet-class>de.gedoplan.demo.SimpleServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>SimpleServlet</servlet-name> <url-pattern>/demo/SimpleServlet</url-pattern> </servlet-mapping> … 8
  • 9. Servlet 3.0: Konfiguration mit Annotationen Registrierung per Annotation @WebServlet(name="SimpleServlet", urlPatterns={"/demo/SimpleServlet"}) public class SimpleServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) { … Auch für: Init-Parameter Servlet Filter Context Listener 9
  • 10. Aber: Servlets sind keine POJOs! Servlet-Klasse implementiert HttpServlet Alternative Jersey/JAX-RS @Path("/demo/SimpleServlet"}) public class SimpleServlet { @Get @Produces("text/plain") public String getMessage() { return "Hello, world"; 10
  • 11. JSF 2.0: Konfiguration mit Annotationen Bisher Deklaration von Managed Beans in faces-config.xml public class DemoBean { private double steuerSatz = 0.19; public double getSteuerSatz() { return steuerSatz; } <faces-config> ... <managed-bean> <description>DemoBean</description> <managed-bean-name>demoBean</managed-bean-name> <managed-bean-class>de.gedoplan.demo.DemoBean</managed-bean-class> <managed-bean-scope>request</managed-bean-scope> </managed-bean> </faces-config> 11
  • 12. JSF 2.0: Konfiguration mit Annotationen Deklaration von Managed Beans per Annotation @ManagedBean(name = "demoBean") @RequestScoped public class DemoBean { private double steuerSatz = 0.19; public double getSteuerSatz() { return steuerSatz; } ... 12
  • 13. JSF 2.0: Konfiguration mit Annotationen Annotation auch für: Managed Properties @ManagedProperty(value=”#{barBean}”) private BarBean barBean; Converter Validatoren Renderer Lifecycle 13
  • 14. JSF 2.0: faces-config.xml ist optional überschreibt Annotationen weiterhin für Anwendungsparameter wie Lokalisierung, Phase Listeners etc. Navigationsregeln 14
  • 15. EJB 3.1: No Interface Beans Bis EJB 3.0: Obligatorisches Local oder Remote Interface @Stateless public class ArbeitsplatzDaoBean implements ArbeitsplatzDao { public void insert(Arbeitsplatz entity) { … } public void update(Arbeitsplatz entity) { … } … @Local public interface ArbeitsplatzDao { public void insert(Arbeitsplatz entity); public void update(Arbeitsplatz entity); … Für rein interne Nutzung (Local!) lästig 15
  • 16. EJB 3.1: No Interface Beans Interfaces sind nun optional. Wenn kein Interface deklariert: Container stellt Referenz-Objekt (Proxy) zur Verfügung Proxy enthält alle öffentlichen Methoden der Bean. Proxy ist von der Bean-Klasse abgeleitet. Nutzung (z.B.) aus anderen EJBs über den Typ der Bean-Klasse. @Stateless public class ArbeitsplatzDaoBean { @Stateless public void insert(Arbeitsplatz entity) { … } class SomeOtherBean public public void update(Arbeitsplatz entity) { … } { … @EJB private ArbeitsplatzDaoBean dao; … 16
  • 17. EJB 3.1: No Interface Beans Erstellung des No-Interface-Referenzobjekts auch zusätzlich mit @LocalBean Achtung: Alle öffentlichen Methoden sind zugreifbar! Aufruf nicht-öffentlicher Methoden wirft Exception. 17
  • 18. EJB 3.1: Singletons Genau eine Bean-Instanz pro JVM. Neue Annotation für Session Beans: @Singleton. @Singleton public class SomeBean { … 18
  • 19. EJB 3.1: Singletons Lebenszyklus wird durch den Container gesteuert. @Startup erzwingt @Singleton Instanziierung beim @Startup Applikationsstart. public class A { … } @DependsOn definiert @Singleton public class B { … } Abhängigkeiten für die Instanziierung. @Singleton @DependsOn("B") public class C { … } @Singleton @Startup @DependsOn({"A", "B"}) public class E { … } 19
  • 20. EJB 3.1: Singletons Unterstützt nebenläufigen Zugriff (Concurrent Access). CMC (Container Managed Concurrency, Default) Container kontrolliert und regelt den Zugriff. Steuerung durch @READ und @WRITE (Default). @AccessTimeout für Limitierung der Blockade. BMC (Bean Managed Concurrency) Entwickler muss synchronized, volatile etc. einsetzen. 20
  • 21. EJB 3.1: Singletons Concurrency Strategy: Beispiele @Singleton @ConcurrencyManagement(CONTAINER) public class A { ... } @Singleton @Lock(READ) @Singleton public class D @Lock(WRITE) { public class B { ... } ... @Singleton @Lock(WRITE) @Lock(READ) public String sayBye() { ... } public class C { ... } ... } @Singleton @AccessTimeout(10000) public class E { ... } 21
  • 22. EJB 3.1: Singletons Singletons sind statusbehaftet. Status besteht bis zum Applikationsende (Shutdown/Undeploy). Im Clusterbetrieb gibt es pro JVM eine Singleton-Instanz. System Exceptions führen nicht zur Zerstörung. 22
  • 23. EJB 3.1: Timer Timer Service wurde von EJB 2.1 mit beschränkter Funktionalität eingeführt: Alle Timer müssen programmatisch erzeugt werden. Unflexibles Scheduling der Timer. Kein Cluster-Support. 23
  • 24. EJB 3.1: Timer Programmatische Instanziierung durch erweitertes Interface TimerService. Deklarative Instanziierung durch Annotationen. Timer können persistent gehalten werden. Timer sind nun cluster-fähig. Nicht-persistente Timer 1 x pro JVM. Persistente Timer 1 x pro Cluster. 24
  • 25. EJB 3.1: Timer @Schedule steuert Erzeugung und Intervalle. @Schedule wird auf Timeout-Callback-Methoden angewandt. @Stateless public class TimerEJB { @Schedule(dayOfWeek="Mon") public void itIsMonday(Timer timer) { … } @Schedule(dayOfMonth="Last") public void itIsEndOfMonth(Timer timer) { … } } 25
  • 26. EJB 3.1: Timer Eine Methode kann auch mit mehreren Timern ausgestattet werden Umfangreiche Erweiterung der Schedule-Terminologie // Every Tuesday at 7.30am @Schedule(hour = "7", minute = "30", dayOfWeek = "Tue") // From Monday to Friday, at 7, 15 and 20 @Schedule(hour = "7, 15, 20", dayOfWeek = "Mon-Fri") // Every hour on Sundays @Schedule(hour = "*", dayOfWeek = "0") // Last Friday of December, at 12 @Schedule(hour = "12", dayOfMonth = "Last Fri", month="Dec") // Three days before the last day of the month, for every month of 2009, at 8pm @Schedule(hour = "20", dayOfMonth = "-3", year="2009") // Every 5 minutes of every hour, starting at 3pm @Schedule(minute = "*/5", hour = "15/1") 26
  • 27. EJB 3.1: Asynchrone Session-Bean-Methoden Session Beans unterstützen asynchronen Methodenaufruf. Kontrolle wird dem Client zurückgegeben werden, bevor der Container den Aufruf an die Bean-Instanz weiterleitet. Es können vom Client parallele (nebenläufige) Prozesse angestoßen werden. 27
  • 28. EJB 3.1: Asynchrone Session-Bean-Methoden Asynchrone Methoden werden durch die @Asynchronous gekennzeichnet. Sowohl Klassen, als auch Methoden können annotiert werden. Rückgabe-Typ asynchroner Methoden: void @Stateless public class C implements CLocal { … } Future<V> @Local public interface CLocal { @Asynchronous public void flushBye(); } 28
  • 29. JPA 2.0: Weitere Mapping-Optionen Abbildung von Collections (ohne explizite Relation) Neue Annotation dafür: @ElementCollection. @Entity public class Person { @ElementCollection private Set<String> hobbies; Auch nutzbar für einbettbare Elemente (@Embeddable). Realisierung wie Relation mit Primärschlüssel-Join. 29
  • 30. JPA 2.0: Weitere Mapping-Optionen @Entity public class Vehicle Relationen auf einge- { @Id bettete Objekte int vehicleId; @Embedded PurchaseInfo purchaseInfo; @Embeddable public class PurchaseInfo … { int price; @Temporal(DATE) @Entity @Column(name=”PUR_DATE”) public class Dealer Date purchaseDate; { @Id @ManyToOne int dealerId; Dealer dealer; @OneToMany(mappedBy=”purchaseInfo.dealer”) … Collection<Vehicle> vehiclesSold; … 30
  • 31. JPA 2.0: Weitere Mapping-Optionen Unidirectional One-to-Many mit einem Foreign Key @Entity public class Vehicle { @Id private int vehicleId; @OneToMany private Set<Part> parts; … 31
  • 32. JPA 2.0: Relationsfelder im Primärschlüssel In manchen Fällen, insbesondere bei der Integration von Alt- Systemen (lagacy databases) ist es notwendig, Primärschlüssel mit Fremdschlüssel einer anderen Tabelle zu realisieren… 32
  • 33. JPA 2.0: Relationsfelder im Primärschlüssel Beispiel: public class ProjectId { @Entity String name; @IdClass(ProjectId.class) int dept; public class Project … { } @Id String name; @Id @ManyToOne @JoinColumn(name=”D_ID”) Department dept; … @Entity public class Department { @Id int id; … 33
  • 34. Fazit Trend zur Vereinfachung setzt sich fort Annotationen statt XML Configuration by Exception Viele nützliche Erweiterungen Singletons Asnchrone Methoden Timer Lohnt sich! 34
  • 35. Danke für Ihre Aufmerksamkeit! Haben Sie Fragen?