Top Banner
JavaEE5 Web-Anwendung mit Creator und NetBeans Dr. Matthias Unverzagt 20. April 2006
32

JavaEE5 Web-Anwendung mit Creator und NetBeansHerangehensweise Firmeneigene Anwendung Zentrale Datenhaltung Daten im XML Format exportierbar (Aufbewahrungspflicht) Web-GUI damit auch

Mar 20, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: JavaEE5 Web-Anwendung mit Creator und NetBeansHerangehensweise Firmeneigene Anwendung Zentrale Datenhaltung Daten im XML Format exportierbar (Aufbewahrungspflicht) Web-GUI damit auch

JavaEE5 Web-Anwendungmit Creator und NetBeansDr. Matthias Unverzagt20. April 2006

Page 2: JavaEE5 Web-Anwendung mit Creator und NetBeansHerangehensweise Firmeneigene Anwendung Zentrale Datenhaltung Daten im XML Format exportierbar (Aufbewahrungspflicht) Web-GUI damit auch

Agenda

Was für eine Anwendung?

Architekturübersicht

Business-Schicht

Präsentationsschicht

Build-Deploy Prozess

Page 3: JavaEE5 Web-Anwendung mit Creator und NetBeansHerangehensweise Firmeneigene Anwendung Zentrale Datenhaltung Daten im XML Format exportierbar (Aufbewahrungspflicht) Web-GUI damit auch

Zweck der Anwendung

Finanzen für eine kleine Dienstleistungs GmbHverwalten

Gesetzliche Anforderungen erfüllen Steuerinformationen monatlich und jährlich ans Finanzamt

senden

Aufbewahrungspflicht für Unterlagen

Information zur Steuerung des Unternehmens Nutzen und Risiken in Geld bewerten

Alle Informationen jederzeit auf Granularität des einzelnen Mitarbeiters, um Mitarbeiter leistungsgerecht bezahlen und ihnen höchst mögliche Freiheit einräumen zu können.

Page 4: JavaEE5 Web-Anwendung mit Creator und NetBeansHerangehensweise Firmeneigene Anwendung Zentrale Datenhaltung Daten im XML Format exportierbar (Aufbewahrungspflicht) Web-GUI damit auch

Akteure im Hinblick auf Finanzen

ENPASOSEnterprise Patterns & Solutions GmbH

KundeLieferant

Finanzamt

Steuer-berater

BuchhalterBank

Geschäfts-führung

Mitarbeiter

Konto-abfragen

Berichteabfragen

bezahlenRechnung

stellen

Info eingeben(Belege,

Reisekosten, etc.)

Steuern

Qualitäts-sicherungexternes

Rechnungs-wesen

Absolution

aktiv passiv

Page 5: JavaEE5 Web-Anwendung mit Creator und NetBeansHerangehensweise Firmeneigene Anwendung Zentrale Datenhaltung Daten im XML Format exportierbar (Aufbewahrungspflicht) Web-GUI damit auch

Herangehensweise Firmeneigene Anwendung

Zentrale Datenhaltung

Daten im XML Format exportierbar (Aufbewahrungspflicht)

Web-GUI damit auch Buchhaltung und Steuerberater problemlos zugreifen können

Automatische Schnittstellen zum Finanzamt über Java-Schnittstelle der Elektronischen Steuererklärung (ELSTER) und zur Bank

Zukunftssicher und unabhängig Java EE Standard IDE unterstützt, aber ohne Vendor Locking

Prototyp 2006Q2

Kernanwendung produktiv 2006Q3

Page 6: JavaEE5 Web-Anwendung mit Creator und NetBeansHerangehensweise Firmeneigene Anwendung Zentrale Datenhaltung Daten im XML Format exportierbar (Aufbewahrungspflicht) Web-GUI damit auch

Architektur PrototypLogische Schichten und Technische Ebenen

persistieren

Objekt-modell

Ser

vice

s

Seiten

CRUD

XML

Busi

nes

sD

eleg

ate

SessionCache

DataProviders

GUI Komponenten

Naviations- regeln

Java Standard Edition 5 (Java SE 5): Annotations …

GlassFish – Open Source Referenzimplementierung von SunJavaDB

Java Enterprise Edition 5 (Java EE 5): EJB3, JAXB2, JSF1.2 …

Database Business Präsentation Client

Page 7: JavaEE5 Web-Anwendung mit Creator und NetBeansHerangehensweise Firmeneigene Anwendung Zentrale Datenhaltung Daten im XML Format exportierbar (Aufbewahrungspflicht) Web-GUI damit auch

Architektur PrototypToolunterstützung

persistieren

Objekt-modell

Ser

vice

s

Seiten

CRUD

XML

Busi

nes

sD

eleg

ate

SessionCache

DataProviders

GUI Komponenten

Navigations- regeln

ANT basierter Buildprozess mit Maven2 Repository Mechanismus

NetBeans 5.5 Previewmit Enterprise PackJavaEE5UML

Creator 2Drag 'n Drop JSF Toolinklusive Komponenten-Library(die allerdings auf J2EE1.4 aufsetzt)

Page 8: JavaEE5 Web-Anwendung mit Creator und NetBeansHerangehensweise Firmeneigene Anwendung Zentrale Datenhaltung Daten im XML Format exportierbar (Aufbewahrungspflicht) Web-GUI damit auch

Objektmodellein Objekt

import javax.persistence;import javax.xml.bind.annotation.XmlType;@XmlType@Entitypublic class Account implements Serializable { private int id; @XmlAttribute @Id @GeneratedValue(strategy=GenerationType.IDENTITY) public int getId() { return id; } public void setId(int id) { this.id = id; }...}

Page 9: JavaEE5 Web-Anwendung mit Creator und NetBeansHerangehensweise Firmeneigene Anwendung Zentrale Datenhaltung Daten im XML Format exportierbar (Aufbewahrungspflicht) Web-GUI damit auch

ObjektmodellObjekte mit Beziehung ClientAccount

... Account ... { private Client client; @XmlTransient @ManyToOne(optional=false) @JoinColumn public Client getClient() { return this.client; } public void setClient(Client client) {this.client = client;}...}

... Client ... { private List<Account> accountList; @XmlElement(name="account") @OneToMany(targetEntity = Account.class, cascade = {CascadeType.ALL}, mappedBy="client") public List<Account> getAccountList() {return accountList;} public void setAccountList(List<Account> accountList) {this.accountList = accountList;}...}

1n

Page 10: JavaEE5 Web-Anwendung mit Creator und NetBeansHerangehensweise Firmeneigene Anwendung Zentrale Datenhaltung Daten im XML Format exportierbar (Aufbewahrungspflicht) Web-GUI damit auch

Objektmodell - Netzenoch ohne Vererbung und many-to-many Beziehungen

n

1A

n

1 n

Default Fetching (many-to-one: EAGER, one-to-many: LAZY)

B C

1A

nB

1

Default fetch B

ADefault fetch A

n

A

1 nB C

1Default fetch C

1

n

Nach einem Objekt greifen:

FIND(Primärschlüssel)

Page 11: JavaEE5 Web-Anwendung mit Creator und NetBeansHerangehensweise Firmeneigene Anwendung Zentrale Datenhaltung Daten im XML Format exportierbar (Aufbewahrungspflicht) Web-GUI damit auch

Objektmodell - Netzenoch ohne Vererbung und many-to-many Beziehungen

n

1A

n

1 n

Cascade (Default: nix cascade) PERSIST

REFRESH

MERGE

REMOVE

B C

1

Page 12: JavaEE5 Web-Anwendung mit Creator und NetBeansHerangehensweise Firmeneigene Anwendung Zentrale Datenhaltung Daten im XML Format exportierbar (Aufbewahrungspflicht) Web-GUI damit auch

Objektmodell - Netzenoch ohne Vererbung und many-to-many Beziehungen

Aus dem Netz den XML Baum schneiden Root Element festlegen:@XmlRootElement

Schleifen zerschneidenund Endpunkte setzen:@XmlTransient

n1 A

n

1 nB C1

n DE1 1

1nn Objektnetz zum

XML Baum schneiden

n1 A

n

1 nB C1

n DE1 1

1nn

Page 13: JavaEE5 Web-Anwendung mit Creator und NetBeansHerangehensweise Firmeneigene Anwendung Zentrale Datenhaltung Daten im XML Format exportierbar (Aufbewahrungspflicht) Web-GUI damit auch

Persistenz – voll automatisiertDatenbank Schema

generieren (GlassFish feature)

Objektmodell

Wie’s geht … Descriptor persistence.xml Beim Deployen auf GlassFishextra="--createtables=false"

vollständig durchEJB3 Entities definiert

Default Mapping

EntityManager

CRUD

Create Table...

compile-time

run-time(container managed)

<?xml version="1.0" encoding="UTF-8"?><persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0"> <persistence-unit name ="finance"> <jta-data-source>jdbc/finance</jta-data-source> <properties> <property name="toplink.ddl-generation" value="create-tables"/> <property name="toplink.create-ddl-jdbc-file-name" value="create_ora.jdbc"/> <property name="toplink.drop-ddl-jdbc-file-name" value="drop_ora.jdbc"/> </properties> </persistence-unit></persistence>

pers

iste

nce

cont

ext

Page 14: JavaEE5 Web-Anwendung mit Creator und NetBeansHerangehensweise Firmeneigene Anwendung Zentrale Datenhaltung Daten im XML Format exportierbar (Aufbewahrungspflicht) Web-GUI damit auch

XML Generierung – voll automatisiert

XML Schemagenerieren

Objektmodell

Wie’s geht … Ant task zum Schema generierencom.sun.tools.jxc.SchemaGenTask

Marshal: quasi automatisch

Unmarshal Besonderheit: das Netz muss aus dem Baumwieder zusammengeflickt werden

vollständig durchEJB3 Entities definiert

marshal

<?xml …<xs:schema …

compile-time

run-time

<as-jaxb-schemagen destdir="build/schemas"> <src path="src/java" /> <classpath> <path refid="dependency.compile.classpath"/> </classpath></as-jaxb-schemagen>

<?xml …<client …

unmarshal

Page 15: JavaEE5 Web-Anwendung mit Creator und NetBeansHerangehensweise Firmeneigene Anwendung Zentrale Datenhaltung Daten im XML Format exportierbar (Aufbewahrungspflicht) Web-GUI damit auch

XML Generierung – wie’s geht … Marshal

Unmarshal

JAXBContext context = JAXBContext.newInstance(Client.class);Marshaller m = context.createMarshaller();m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); OutputStream out = …; m.marshal(client, out);

marshal <?xml …<client …

unmarshal <?xml …<client …

JAXBContext context = JAXBContext.newInstance(Client.class);Unmarshaller u = context.createUnmarshaller();InputStream in = …;Client client = (Client) u.unmarshal(in);client.repairObjectNetwork();

Page 16: JavaEE5 Web-Anwendung mit Creator und NetBeansHerangehensweise Firmeneigene Anwendung Zentrale Datenhaltung Daten im XML Format exportierbar (Aufbewahrungspflicht) Web-GUI damit auch

Services

Objekt-modell

Ser

vice

s

Business

public interface Service { public Object create(Object bo) …; public Object retrieve(… ; public void update(… ; public void delete(… ; public byte[] getXMLFromClient(int clientId) …; public void storeClientFromXML(int id, byte[] data) …;}

public @Interceptors ({LoggingInterceptor.class})@Stateless@Remote(Service.class)public class ServiceBean { @PersistenceContext(unitName="finance") public EntityManager em; @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) public Object create(Object bo) throws ServiceException { try { em.persist(bo); } catch (Exception e) { throw new ServiceException("No save."); } return bo; } …}

Page 17: JavaEE5 Web-Anwendung mit Creator und NetBeansHerangehensweise Firmeneigene Anwendung Zentrale Datenhaltung Daten im XML Format exportierbar (Aufbewahrungspflicht) Web-GUI damit auch

Präsentations Schicht

SeitenBusi

nes

sD

eleg

ate

SessionCache

DataProviders

GUI Komponenten

Navigations- regeln

Creator 2Drag ‘n Drop JSF Toolinklusive Komponenten-Library(die allerdings auf J2EE1.4 aufsetzt)

Page 18: JavaEE5 Web-Anwendung mit Creator und NetBeansHerangehensweise Firmeneigene Anwendung Zentrale Datenhaltung Daten im XML Format exportierbar (Aufbewahrungspflicht) Web-GUI damit auch

JavaServer Faces – Teil von Java EE 5

Servlets 2.5

JSP 2.1 JSF 1.2 API

JSF 1.2 Tags

JSF Anwendung

Java EE 5

Page 19: JavaEE5 Web-Anwendung mit Creator und NetBeansHerangehensweise Firmeneigene Anwendung Zentrale Datenhaltung Daten im XML Format exportierbar (Aufbewahrungspflicht) Web-GUI damit auch

JavaServer Faces – Request/Response

FacesRequest Restore

View

ApplyRequestValues

ProcessEvents

ProcessValidations

ProcessEvents

ResponseComplete

ResponseComplete

Render Response

ResponseComplete

ResponseComplete

FacesResponse Render

ResponseInvoke

Application

UpdateModelValues

ProcessEvents

ProcessEvents

Conversion Errors /Render Response

Validation / ConversionErrors / Render Response

aus JSF 1.2 Spezifikation

Page 20: JavaEE5 Web-Anwendung mit Creator und NetBeansHerangehensweise Firmeneigene Anwendung Zentrale Datenhaltung Daten im XML Format exportierbar (Aufbewahrungspflicht) Web-GUI damit auch

JavaServer Faces – Managed Beans

Werden von JSF verwaltet

Scope/Lebensdauer: Request, Session, Application

2 Session Beans in der Anwendung: Business Delegate public @EJB Service service;

Cache für ObjectListDataproviders Zu jeder JSP/JSF Seite gehört eine PageBean

(Request Scope). Creator plaziert hier Aktionen und Komponenteninstanzen.

Zugriff über Unified Expression Language, z.B.:#{TransactionTypes.textFieldName}

Logischer Beanname getter/setter Referenz

Einziger Ort in derPräsentationsschicht,

wo ich Annotations und Dependency Injection

benutzte. Creator2 hat damit Probleme.

Page 21: JavaEE5 Web-Anwendung mit Creator und NetBeansHerangehensweise Firmeneigene Anwendung Zentrale Datenhaltung Daten im XML Format exportierbar (Aufbewahrungspflicht) Web-GUI damit auch

Creator2 – eine JSF Seite

Komponenten-bibliothek

Komponenten-baum der Seite

Propertieseiner ausgewählten

Komponente

ProjektBestandteile

Page 22: JavaEE5 Web-Anwendung mit Creator und NetBeansHerangehensweise Firmeneigene Anwendung Zentrale Datenhaltung Daten im XML Format exportierbar (Aufbewahrungspflicht) Web-GUI damit auch

Netbeans 5.5 Preview – Java EE 5

GlassFish

JavaDB

server.log

DEBUGGING

Page 23: JavaEE5 Web-Anwendung mit Creator und NetBeansHerangehensweise Firmeneigene Anwendung Zentrale Datenhaltung Daten im XML Format exportierbar (Aufbewahrungspflicht) Web-GUI damit auch

Build Prozess = ANT + MAVEN 2 Repo Kleine Projekte, die aus ihren eigenen Quelldateien und

den Produkten (…jar, …ear, …war) anderer Projekte ihr eigenes Produkt erzeugen, z.B.:

Quelldateien

Produkte anderer Projekte

Build Prozess

definiert zugeführt:pom.xml

Produkt des Projekts

Page 24: JavaEE5 Web-Anwendung mit Creator und NetBeansHerangehensweise Firmeneigene Anwendung Zentrale Datenhaltung Daten im XML Format exportierbar (Aufbewahrungspflicht) Web-GUI damit auch

Build Prozess = ANT + MAVEN 2 Repo Quelldateien in Subversion auf java.net https://enpasos.dev.java.net/svn/enpasos/financeOpen Source: Apache License, Version 2

Produkte in Maven Repository Externes Produkt Repository: http://www.ibiblio.org/maven2/

Internes Produkt Repository, lokales Verzeichnis

Page 25: JavaEE5 Web-Anwendung mit Creator und NetBeansHerangehensweise Firmeneigene Anwendung Zentrale Datenhaltung Daten im XML Format exportierbar (Aufbewahrungspflicht) Web-GUI damit auch

Build Prozess = ANT + MAVEN 2 Repo

MAVEN 2 stellt ANT Tasks zur Verfügung, die den Zugriff auf die Repositories kapseln

Page 26: JavaEE5 Web-Anwendung mit Creator und NetBeansHerangehensweise Firmeneigene Anwendung Zentrale Datenhaltung Daten im XML Format exportierbar (Aufbewahrungspflicht) Web-GUI damit auch

Build Prozess mit ANT: macrodef

Vermeidung von Redundanzen: ANT-Makros und deren Auslagerung in zentrale Dateien.

Page 27: JavaEE5 Web-Anwendung mit Creator und NetBeansHerangehensweise Firmeneigene Anwendung Zentrale Datenhaltung Daten im XML Format exportierbar (Aufbewahrungspflicht) Web-GUI damit auch

Bootstrap Java SE 5 installierenhttp://java.sun.com/j2se/1.5.0/download.jsp

ANT 1.6.5 installierenhttp://ant.apache.org/bindownload.cgi

Sun Java Studio Creator 2 installierenhttp://developers.sun.com/prodtech/javatools/jscreator/downloads/

Bootstrap Datei in C:/finance ablegenhttp://www.enpasos.com/bootstrap.xml

und startenC:/finance/ant –f bootstrap.xml

Page 28: JavaEE5 Web-Anwendung mit Creator und NetBeansHerangehensweise Firmeneigene Anwendung Zentrale Datenhaltung Daten im XML Format exportierbar (Aufbewahrungspflicht) Web-GUI damit auch

Automatisierte Installation

BasisJavaSE,ANT,Creator2,bootstrap.xml

SoftwareDie fehlendenSoftware-Bausteine werden ausdem Internetzusammengesucht

GlassFish(Application Server)wird installiert.

Build,Package,DeployProdukte zu allenTeilprojekten werdengebaut. Als Endprodukt entstehtdie Datei finance.ear,die dann deployedwird.

JavaDB(Datenbank)Repository wirdangelegt unddie als datasourceim Application Serverangelegt.

Browserhttp://localhost:8080/finance

auto auto auto auto

Page 29: JavaEE5 Web-Anwendung mit Creator und NetBeansHerangehensweise Firmeneigene Anwendung Zentrale Datenhaltung Daten im XML Format exportierbar (Aufbewahrungspflicht) Web-GUI damit auch

Ease of Development … für mich

Lokale Kontext bezogene Arbeit im Code.

Toolunterstützung, insbesondere wo globale Sicht nötig ist, z.B. WebGUI oder Domainenübersicht (UML).

Verlässliche Standards, wo ich, wenn nötig, nachschlagen kann.

Page 30: JavaEE5 Web-Anwendung mit Creator und NetBeansHerangehensweise Firmeneigene Anwendung Zentrale Datenhaltung Daten im XML Format exportierbar (Aufbewahrungspflicht) Web-GUI damit auch

Sun's mission ...

http://www.sun.com/smi/Press/sunflash/2006-04/sunflash.20060411.1.xml

Page 31: JavaEE5 Web-Anwendung mit Creator und NetBeansHerangehensweise Firmeneigene Anwendung Zentrale Datenhaltung Daten im XML Format exportierbar (Aufbewahrungspflicht) Web-GUI damit auch

Links

Java EE 5 Tutorial http://java.sun.com/javaee/5/docs/tutorial/doc/

Java EE 5 Specs http://java.sun.com/javaee/5/javatech.html

Creator 2 http://developers.sun.com/prodtech/javatools/jscreator/

NetBeans 5.5 Features http://developers.sun.com/prodtech/javatools/jsenterprise/tpr/learning/tutorials/index.html

diese Folien bei java.net https://enpasos.dev.java.net ...http://enpasos.com/JavaEE5_Creator2_NetBeans55.pdf

Page 32: JavaEE5 Web-Anwendung mit Creator und NetBeansHerangehensweise Firmeneigene Anwendung Zentrale Datenhaltung Daten im XML Format exportierbar (Aufbewahrungspflicht) Web-GUI damit auch

Viel Freude mit Java EE 5!

[email protected]. April 2006