write once, run nowhere (else)?“ · 1 orientation in objects gmbh weinheimer str. 68 68309...

28
1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de [email protected] "Write Once, Run Nowhere (else)?“ Portabilität von J2EE-Anwendungen Tobias Kieninger <[email protected]> 2 © 2004 Orientation in Objects GmbH „Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen ) Akademie ) ) Beratung ) „Orientierung“ in Objekten Schulungen, Coaching, Weiterbildungsberatung, Train & Solve-Programme Methoden, Standards und Tools für die Entwicklung von offenen, unternehmens- weiten Systemen Schlüsselfertige Realisierung von Software Unterstützung laufender Projekte Pilot- und Migrationsprojekte ) Projekte )

Upload: others

Post on 09-Jul-2020

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Write Once, Run Nowhere (else)?“ · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim info@oio.de "Write Once, Run Nowhere (else)?“ Portabilität von J2EE-Anwendungen

1

Orientation in Objects GmbH

Weinheimer Str. 6868309 Mannheim

[email protected]

"Write Once, Run Nowhere (else)?“

Portabilität von J2EE-Anwendungen

Tobias Kieninger<[email protected]>

2

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

) Akademie ) ) Beratung )

„Orientierung“ in Objekten

• Schulungen, Coaching, Weiterbildungsberatung, Train & Solve-Programme

• Methoden, Standards und Tools für die Entwicklung von offenen, unternehmens- weiten Systemen

• Schlüsselfertige Realisierung von Software• Unterstützung laufender Projekte• Pilot- und Migrationsprojekte

) Projekte )

Page 2: Write Once, Run Nowhere (else)?“ · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim info@oio.de "Write Once, Run Nowhere (else)?“ Portabilität von J2EE-Anwendungen

2

3

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

Gliederung

• Motivation• Entwicklungsszenario• Typische Verdächtige

4

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

Was wir (nicht) tun!

• Ist Websphere performanter als BEA?• Skaliert Orion besser als JBoss?• Hat Resin mehr Features als Tomcat?• Welcher Application Server hat die besten Mapping Tools?

Page 3: Write Once, Run Nowhere (else)?“ · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim info@oio.de "Write Once, Run Nowhere (else)?“ Portabilität von J2EE-Anwendungen

3

5

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

Ziele der Session!

• Richtlinien• Mögliche Entwicklungsprozesse• Erfahrungsberichte

6

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

Portabilität! Warum?

• Wir haben doch einen Standard ;-)

• Was steht leider nicht drin?– Persitenzmappping– Administration

• JMX teil von J2SE– Deployment

• Deployment API ab J2EE 1.5

Page 4: Write Once, Run Nowhere (else)?“ · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim info@oio.de "Write Once, Run Nowhere (else)?“ Portabilität von J2EE-Anwendungen

4

7

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

Portabilität! Warum?

• Unabhängigkeit vom Lieferanten, eröffnet Verhandlungsspielräume

• Verkauf / Weitergabe des Produkts - verschiedene Zielplattformen

• Entwicklungsbeginn vor Serverentscheidung

• Serverentscheidung muss nachträglich geändert werden– Politische Gründe (Stichwort „immer IBM“)– Ökonomische Gründe (Stichwort „JBoss ist doch umsonst...“)– Technologische Gründe (Stichwort J2EE 1.4 und BEA)

8

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

Gliederung

• Motivation• Entwicklungsszenario• Typische Verdächtige

Page 5: Write Once, Run Nowhere (else)?“ · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim info@oio.de "Write Once, Run Nowhere (else)?“ Portabilität von J2EE-Anwendungen

5

9

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

Projektkennzahlen

• 8 Leute• ca. 3,5 Personenjahre• ca. 60 Entitäten• ca. 220 Formulare• Gesamtlaufzeit ca. 1,5 Jahre

10

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

Voraussetzungen zum Projektbeginn

• Kundenwunsch– Zielsystem: WebSphere, Oracle

• Entwicklerwunsch– Entwicklersysteme: JBoss, Eclipse, Open Source

Page 6: Write Once, Run Nowhere (else)?“ · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim info@oio.de "Write Once, Run Nowhere (else)?“ Portabilität von J2EE-Anwendungen

6

11

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

WebschichtWebschicht

Business DelegatesBusiness Delegates

Datenbank

Session FassadeSession Fassade

Grobe Architektur

DAOsDAOs Entity BeansEntity Beans

• Frontend– Servlets / JSP– Struts

• Backend– EJBs– J2EE-Patterns– DAOs

• Datenbank– Relational

12

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

Tooling, ein wichtiges Thema!

• Eclipse– Lomboz– XML Buddy– Checkstyle– DBEdit

• Ant• XDoclet...

WSAD

Page 7: Write Once, Run Nowhere (else)?“ · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim info@oio.de "Write Once, Run Nowhere (else)?“ Portabilität von J2EE-Anwendungen

7

13

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

WebschichtWebschicht

Business DelegatesBusiness Delegates

Datenbank

Testing

Tests / Junit

JUnitJUnit

JWebUnitJWebUnit

DBUnit

14

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

JUnit

• Basis-Treiber für zahllose Derivate unddamit einheitliche Basis für autom. Tests

• Unit-Tests für Business Delegates

FrontendFrontend

Business DelegatesBusiness Delegates

BackendBackend

Junit - TestsJunit - Tests

Page 8: Write Once, Run Nowhere (else)?“ · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim info@oio.de "Write Once, Run Nowhere (else)?“ Portabilität von J2EE-Anwendungen

8

15

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

JWebUnit

• Basiert auf HTTPUnit

• Simuliert Webbrowser

• Prüft Ergebnisseiten ab

...public void testCreateAndDisplay() {

login("/admin/mandator/create.do");

assertTitleEqualsKey("admin.mandator.create.title");

setFormElement("name", "Norbert Leitwein");

submit(BUTTON_SAVE);

assertTitleEqualsKey("admin.mandator.create.title");

assertTextPresent("Sie müssen Feld Name ausfüllen.");

...

16

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

DBUnit

• Schreibt Testdaten in Datenbank

• Datenbank wird für jeden Test neu initialisiert

...

<ID_TABLE ENTITY="de.project.AccountBean" LASTID="1"/>

<ACCOUNT ID="1" NAME="Diba Kto" NUMBER="0815" ... />

<ARTEFACT ID="1" NAME="Gegenstand" NOTE="Bemerkung" .../>

<ARTEFACT ID="2" NAME="Gegenst 2" NOTE="Bemerkung2" .../>

...

Page 9: Write Once, Run Nowhere (else)?“ · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim info@oio.de "Write Once, Run Nowhere (else)?“ Portabilität von J2EE-Anwendungen

9

17

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

CVS - Concurrent Versions System

CVS

Entwicklung

18

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

A build a day... Continuous Integration!

CVS

Entwicklung

Cruise Control

QA

JBoss

TestsTestsTestsTests

Intranet

Page 10: Write Once, Run Nowhere (else)?“ · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim info@oio.de "Write Once, Run Nowhere (else)?“ Portabilität von J2EE-Anwendungen

10

19

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

Cruise Control

Ist im Prinzip ein Timer• der Ant-Skripte anstoßen• und Mails verschicken• und Reports ablegenkann

20

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

Wöchentliche Milestonebuilds

CVS

QA

Entwicklung

wöchentliche manuelle Akzeptanz-Tests

Page 11: Write Once, Run Nowhere (else)?“ · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim info@oio.de "Write Once, Run Nowhere (else)?“ Portabilität von J2EE-Anwendungen

11

21

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

XDoclet

XDocletEngine

...

/*** @ejb.interface-method*/public int addiere(int a, int b) {return (a + b);}...

XMLJavaText

22

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

XDoclet im Projekt

• EJB– SessionBeans– Session Fassade– EntityBeans

• CMR Relationen• Mappinginformationen

– Transfer Objects– Struts Formulare

• Mit Validierung

• Web– Struts

• Actions• ActionForms

– Servlets– Listener

Page 12: Write Once, Run Nowhere (else)?“ · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim info@oio.de "Write Once, Run Nowhere (else)?“ Portabilität von J2EE-Anwendungen

12

23

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

XDoclet Beispiel

/**

* @ejb.bean description="value" display-name="Account"

* local-jndi-name="local/AccountLocalHome"

* name="Account" primkey-field="id" schema="Account“

* type="CMP" cmp-version="2.x" view-type="local"

*

* @ejb.pk class = "java.lang.Long“

* ...

*

* @ejb.value-object name = "Account" match = "Account"

* ...

* @struts.form name = "Account"

* ...

*/

public abstract class AccountBean implements EntityBean {

...

24

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

XDoclet und Portabilität

• JBoss-Tags– Bsp: @jboss.query– mehr als 30 Tags– Gut gepflegt

• Websphere-Tags– DB Mapping– Schwer verwendbar

Page 13: Write Once, Run Nowhere (else)?“ · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim info@oio.de "Write Once, Run Nowhere (else)?“ Portabilität von J2EE-Anwendungen

13

25

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

Strategie I: Seltene aber regelmäßige Portierung

CVS

Entwicklung

JBossJBoss

JBoss

Integratoren

WASTestsTestsTestsTests

26

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

Regelmäßige, seltene Portierung

• Vorteile– Bewahrung der Arbeitsweise– Kenntnisse für verschiedene Server können auf wenig Leute

reduziert werden

• Nachteile– Zusätzliche Migrationsaufwände

• Aufwand bei ca. 2 + x BT pro Release• Risiko minimiert durch automatisiertes Testbett

– Serverspezifische Probleme des Zielsystems werden erst bei derPortierung entdeckt

• Performance, Cache, Single-Sign-On, etc.

Page 14: Write Once, Run Nowhere (else)?“ · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim info@oio.de "Write Once, Run Nowhere (else)?“ Portabilität von J2EE-Anwendungen

14

27

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

Fazit Strategie I

• Migrationsaufwand zufriedenstellend• Prozess verbesserungsfähig

• Team glücklich!• Kunde glücklich!

28

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

JBoss

• HotDeploy durch dynamic Proxies

• Fehlertolerant bei Referenzen

Page 15: Write Once, Run Nowhere (else)?“ · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim info@oio.de "Write Once, Run Nowhere (else)?“ Portabilität von J2EE-Anwendungen

15

29

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

JBoss

Build & Deployment auf JBoss (vereinfacht)

• Buildprozess ist Ant gesteuert• XDoclet generiert Code und Deskriptoren• EAR wird zusammengepackt• JBoss Hotdeploy-Mechanismus wird verwendet

SourcenSourcenSourcenSourcenSourcenSourcenSourcenSourcen EAR

XDoclet

30

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

WSAD

• Für Stubs muss RMIC-Code generiert werden

• Kätzerei: „Deployen von 3 Beansdauert 20 Minuten“

• Streit mit den ANT-Tasks– Mitgeliefertes ANT verwenden– Fixpacks installieren

Page 16: Write Once, Run Nowhere (else)?“ · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim info@oio.de "Write Once, Run Nowhere (else)?“ Portabilität von J2EE-Anwendungen

16

31

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

Deployment auf Websphere

• Standard DB-Mapping generieren• Mapping automatisiert anpassen• RMIC-Code für Remotezugriff generieren• EAR in App-Server installieren und starten

EAR EAR*DB-Mapping

EAR**DB-Mapping*

XSLT

EAR***DB-Mapping*

RMIC-Code

WAS

32

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

DB

Strategie II: Continous Integation auf beiden Systemen

CVS

Entwicklung

CC-JBoss

QA

CC-WASTestsTestsTestsTests

JBoss

WAS-Guy

Page 17: Write Once, Run Nowhere (else)?“ · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim info@oio.de "Write Once, Run Nowhere (else)?“ Portabilität von J2EE-Anwendungen

17

33

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

Fazit Strategie II

• Vorteile– Frühe Problemerkennung

• Nachteile– Initial hoher Automatisierungsaufwand

• Automatisches Deployment schwierig in Websphere– Mehr Kenntnisse im Team erforderlich

34

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

Gliederung

• Motivation• Entwicklungsszenario• Typische Verdächtige

• JDK• JAAS• EJBQL / Persitenz• „Stolpersteinchen“

Page 18: Write Once, Run Nowhere (else)?“ · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim info@oio.de "Write Once, Run Nowhere (else)?“ Portabilität von J2EE-Anwendungen

18

35

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

JDK Versionen

Websphere JBoss

IBM JDK 1.3

IBM JDK 1.4

Sun JDK 1.3

Sun JDK 1.4

bis WS 5.0

ab WS 5.1 (*)

(*) Läuft mit Nachhelfen

36

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

Gliederung

• Motivation• Entwicklungsszenario• Typische Verdächtige

• JDK• JAAS• EJBQL / Persitenz• „Stolpersteinchen“

Page 19: Write Once, Run Nowhere (else)?“ · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim info@oio.de "Write Once, Run Nowhere (else)?“ Portabilität von J2EE-Anwendungen

19

37

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

JAAS

• Java Authentication and Authorization Service (JAAS)– seit Version 1.4– Java 2 Standart Edition

• Standardisierte Schnittstelle um einen Benutzer– anzumelden– autorisieren

38

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

Deklaratives Modell

• Berechtigungen werden in XML Dateien beschrieben– ejb-jar.xml für EJBs– web.xml für Webanwendungen

• Gruppierung von Berechtigungen über Rollen

• Keine Einbindung in Business Logik– Weiterführendes kann integriert werden

• Trennung von Sicherheits- und Anwendungslogik

Page 20: Write Once, Run Nowhere (else)?“ · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim info@oio.de "Write Once, Run Nowhere (else)?“ Portabilität von J2EE-Anwendungen

20

39

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

JAAS Grenzen

• Benutzername/ Passwort-Paar reicht nicht aus– z. B. zusätzliche Mandanteninformationen

• Schnittstelle zum Principal recht „schmal“

• Gibt java.security.Principal zurück– Interface mit 4 Methoden

• equals(Object o)• getName()• hashCode• toString()

40

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

Zusätzliche Daten mit JAAS

• Zusätzliche Daten müssen bei Anmeldung publiziert werden– Proprietäre Schnittstelle der Application Server

• WSSubject• ThreadLocal bei JBoss

• Daten können später wieder ausgelesen und genutzt werden

ServletFilter Filter Filter

AppServerSecurityFilter

Page 21: Write Once, Run Nowhere (else)?“ · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim info@oio.de "Write Once, Run Nowhere (else)?“ Portabilität von J2EE-Anwendungen

21

41

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

CodeBeispiel

...Long mandatorFK = RuntimeMandatorUtil.getMandator(sessionContext);...

/*** Gibt die Mandanteninformation des angemeldeten Benutzers zurück* @param sessionContext Kontext* @return Id des Mandaten*/

public static synchronized Long getMandator(SessionContext sessionContext) {

if (ServerChecker.isJBoss()) {return MandatorAssociation.getMandator();

}

return getMandatorForWebSphere();

}

42

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

Gliederung

• Motivation• Entwicklungsszenario• Typische Verdächtige

• JDK• JAAS• EJBQL / Persitenz• „Stolpersteinchen“

Page 22: Write Once, Run Nowhere (else)?“ · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim info@oio.de "Write Once, Run Nowhere (else)?“ Portabilität von J2EE-Anwendungen

22

43

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

Abfragesprache EJB QL

• Nicht mehr Produktspezifisch

– Werden in der ejb-jar.xml Datei deklariert!– Verwenden EJB-QL Abfragesprache

44

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

Beispiele für EJB QL

Einfache AbfrageSELECT OBJECT(b)

FROM Bestellung AS b

Abfrage mit Parameter (aus Query oder Select)SELECT OBJECT(b)

FROM Bestellung AS b

WHERE b.kundennr = ?1

Abfrage über Relationen hinweg:SELECT OBJECT(b)

FROM Bestellung AS b, IN( b.positionen ) AS position

WHERE b.datum < ?1

AND position.produkt.name = ‘Banane’

Page 23: Write Once, Run Nowhere (else)?“ · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim info@oio.de "Write Once, Run Nowhere (else)?“ Portabilität von J2EE-Anwendungen

23

45

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

EJB-QL in der Praxis

• SQL nicht vollständig abgebildet, es fehlen z.B.– ORDER BY– GROUP BY– Subqueries

• Benutzen mehrerer Tabellen in einer Abfrage (Join)– In WebSphere (bisher?) nicht möglich

• SELECT OBJECT(o) FROM organisation AS o, Dossier as dWHERE d.applicantOrganisation.id = o.id and d.id = ?1

• Spezifikation schwammig

46

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

EJB-QL in der Praxis II

• Keine Beschränkung der Rückgabemenge– Nur über Containererweiterungen

• Vergleichsoperatoren unzureichend– LIKE wird unterstützt, aber keine doppelten Wildcards

• Kri%ti%n nicht möglich

Page 24: Write Once, Run Nowhere (else)?“ · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim info@oio.de "Write Once, Run Nowhere (else)?“ Portabilität von J2EE-Anwendungen

24

47

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

Noch ein J2EE Pattern: Keine Entity Beans

• Lesende Zugriffe teilweise als DAOs realisiert– Viele Joins– Komplexe Suchen– Grosse Ergebnismengen WebschichtWebschicht

Business DelegatesBusiness Delegates

Datenbank

Session FassadeSession Fassade

DAOsDAOs

48

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

DB Mapping

• Automatisches Mapping– Bei „grüner Wiese“ noch möglich– Aber wer hat das schon?

• WSAD– Mapping mittels Drag & Drop

• XDoclet– Als Tags

Page 25: Write Once, Run Nowhere (else)?“ · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim info@oio.de "Write Once, Run Nowhere (else)?“ Portabilität von J2EE-Anwendungen

25

49

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

Gliederung

• Motivation• Entwicklungsszenario• Typische Verdächtige

• JDK• JAAS• EJBQL / Persitenz• „Stolpersteinchen“

50

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

WEB-INF-Konfusionen

• Best Practice: JSP-Dateien vor direktem Zugriff schützen!

• Wie?– JSP-Dateien werden in /WEB-INF abgelegt

• Konfusion?– Tomcat: Dateien aus /WEB-INF dürfen gelesen werden– SAP: Kann Dateien dort nicht lesen

Page 26: Write Once, Run Nowhere (else)?“ · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim info@oio.de "Write Once, Run Nowhere (else)?“ Portabilität von J2EE-Anwendungen

26

51

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

Out of Memory? WAS 5.0

• WAR-File grösser als 150 MB hat zu Out of Memory geführt• Dateien nachträglich unterschieben als Workaround• Fixpacks installieren

52

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

Logout in SSO-Umgebung

• Bei WAS und Single-Sign-On Umgebung funktioniertsession.invalidate() nicht wie gewünscht

• SSO-Anmeldung wird gehalten

• Proprietäre Lösung für Logout bei Websphere

requestDispatcher.sendRedirecht(

"ibm_security_logout?logoutExitPage=/exception.jsp");

Page 27: Write Once, Run Nowhere (else)?“ · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim info@oio.de "Write Once, Run Nowhere (else)?“ Portabilität von J2EE-Anwendungen

27

53

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

Fazit

• Portabilität hat ihren Preis

• Portabilität liegt selten am Produkt, sondern an– Prozess– Spezifikationskonformität

• Portabilität ist realisierbar– Wichtig ist die Frage wie portabel man sein möchte

Orientation in Objects GmbH

Weinheimer Str. 6868309 Mannheim

[email protected]

Vielen Dank für IhreAufmerksamkeit !

Page 28: Write Once, Run Nowhere (else)?“ · 1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim info@oio.de "Write Once, Run Nowhere (else)?“ Portabilität von J2EE-Anwendungen

28

Orientation in Objects GmbH

Weinheimer Str. 6868309 Mannheim

[email protected]

? ?

???

Fragen ?

56

© 2004 Orientation in Objects GmbH„Write Once, Run Nowhere (else)?“ - Portabilität von J2EE-Anwendungen

„OIO-JAX Scrabble“ Gewinnspiel

• Spielen Sie mit uns eine Runde OIO-JAX Scrabble und gewinnenSie ein OIO Seminar aus dem Bereich

• „Scrabble-Felder“ bekommen Sie an unserem Konferenzstand.• Abgabe bis Donnerstag, 12.05.05 - 11.45 Uhr

• Gewinnbekanntgabe: 12.05.05 - 14.10 Uhr

• Wir freuen uns über Ihren Besuch.Viel Spass beim Scrabbeln!

UUUUEEEE

CCCCOOOOSSSS

NNNNEEEE

PPPPRRRROOOO

OOOOIIII

XXXXJJJJ AAAA@@@@OOOO