1
1e-Procurement mit JBoss EJB Server und Apache Cocoon 2
e-Procurement
mit
JBoss EJB Server
und
Apache Cocoon 2
2© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
eProcurement System
eProcurement
Prozesse
Stammdaten
Multivendor
Katalog nach BMECat
Produktdatenaustausch
Geschäftsidee Realisierung
KUNDE
2
3© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Verwendete Technologien
• Servlet• JSP• EJB• JMS• JDBC• JavaMail• JNDI• ...
Fast gesamter Umfang der J2EE-Technologien+ zusätzlich XML Technologien (XSP, XSLT, ...)
J2EE + XML
4© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Überblick
• Software Entwicklungsumgebung• Application Server• XML based Web Development• Cocoon 2.0• Systemarchitektur• Aspekte der Client Architektur• Aspekte der Server Architektur• Fazit
3
5© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
SEU
• Xemacs (Code-Generatoren mitPerl ??Live-Demo EB codenaus vorgefertigtem Data mitDeployment??)
• Ant (Projekttemplate)• J2EE Deployment• JUnit• CVS (evtl. Auswertungstools,
Online Browsing)• Bugzilla (auch hier Auswertung
Entwicklung gefixter Bugs)
6© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Wechsel von make zu Ant
Integriert: CVS,JUnit, Reports;
Validierbar;Erweiterbar
(eigene Tasks)
BatchFlexibilität
JavaOS-spezifischPlatform
(Portabilität)
janeinMulti-threading
< 2 min> 20 minBuild-Dauer
Antmake
4
7© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
• usage - zeigt an welche Targets verfügbar sind• compile - übersetzen der Java Quell Dateien• package - Java Archive erstellen• javadoc - Dokumentation erstellen• test - mögliche JUnit Tests starten• clean - löscht alle erzeugten Dateien (außer JavaDoc)• deploy - kopiert das Java Archive in die korrekten
Verzeichnisse• dist - erstellt eine auslieferbare Version mit allen
benötigten Verzeichnissen
Jakarta Ant als Build-Tool - Standard Targets
8© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Enterprise Project Template
Kann über CVS bezogen werden :• bin - ausführbare Dateien, Skripte• docs - Dokumentation und JavaDoc• libs - benötigte Java Archive (JAR‘s)• src - Java Quellen und Deployment Deskriptoren• web - Quell- bzw. Konfigurationsdateien für Web Front End
Befindet sich nicht im CVS :• build - erzeugte Dateien, jederzeit neu herstellbar• dist - Zielverzeichnis für Distribution
5
9© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
J2EE Packaging
J2EE component
+ related files (Image-Dateien, Server-Utilities, ...)+ deployment descriptor (XML)
J2EE component
J2EE Application (Module)
Enterprise Bean Component (JAR)Web Component (WAR)Application Client Component (JAR)
. . . . . . . . . . . . .
. . . . . . . . . . . . .
J2EE ApplicationFinal Enterprise Solution(EAR)
10© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
JUnit als Test-Framework für EJBs
• Integration mit Ant (XML-Report Generierung undTransformation durch XSL)
• Suiten-Bildung (Create-, Ops-, Remove-Testsuiten)• Automatisierte Repository Checks iVm. Nightly Builds• Wichtig für Portierung auf anderen Application Server• Anzahl Test Cases: ~ 170
6
11© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
JUnit Reportgenerierung bei Ant
TESTS-TestSuites.xml
TEST-...TestClassificationSystem.xml
TEST-...TestClassificationSystem.xml
TEST-....xml
12© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
JUnit Reportgenerierung bei Ant
+ ANT XSLStylesheets
TESTS-TestSuites.xml
7
13© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Bugzilla
• Bug-Reporting Tool• Open Source• Bekannt durch Mozilla (Netscape Browser Grundstock)• Kunde testet mit Minimierung Test-Aufwand Entwickler
– Kostensenkung– Bessere Fehlerbeschreibungen– Prioritäten durch Kunde bestimmt
• Auswertungen für Projektleitung/Management• Verwaltung mehrerer Projekte möglich
– Sichtbarkeit einschränkbar
14© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Überblick
• Software Entwicklungsumgebung• Application Server• XML based Web Development• Cocoon 2.0• Systemarchitektur• Aspekte der Client Architektur• Aspekte der Server Architektur• Fazit
8
15© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Migration zu JBoss
• Warum– Bisher: Kommerzieller Application Server für Portal– Jetzt: Umwandlung von Portal zur Massenlösung -> Lizenzkosten++
• -> JBoss– Aktuelle Version: JBoss 2.4.3– Persistenz
• Nutzung server-spezifisches Feature (Nested Fields)• Java-JDBC-SQL Type Mapping
• Was mußte getan werden?– Server-spezifische Deskriptoren
• Finder• DB-Mapping• Resource Manager Connection Factories
• Vorteile:– Verwaltung der Runtime des Komplett-Systems durch eigenes CVS
Minimierung Installationsaufwand
16© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
JBoss Application Server
• Open Source• Vollständiger J2EE
Stack• Quelle: www.jboss.org
• JBossServer• JBossMQ• JBossCMP• JBossCX• JBossTX• JBossSX• JBossMX• JBossSOAP• JBossTest• JBossMail• JBossDoc• JBossMGT
9
17© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Problem: grosse Attributmenge
Unternehmen
unternehmenID name vorname strasse ...
unternehmerID
vorname
strasse
plz
ort
...
name
18© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Nested Fields Feature
<<Entity Bean>>Unternehmen
unternehmenData
unternehmenID name vorname strasse ...
<<ValueObject>>UnternehmenData
unternehmenIDlieferAdresserechnungsAdresse...
Adresse
namevornamestrasseplzort
unternehmenID name vorname strasse ...
10
19© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Auszug aus Deployment Descriptor
• EJB Standard-Deskriptor
<entity>
<ejb-name>Unternehmen</ejb-name> <home>de.oio...UnternehmenHome</home>
<remote>de.oio...Unternehmen</remote>
<ejb-class>
de.oio...UnternehmenBean
</ejb-class> <persistence-type>Container</persistence-type> <cmp-field>
<field-name>unternehmenID</field-name>
</cmp-field> <cmp-field>
<field-name>data</field-name> </cmp-field>
</entity>
• Server-spezifischer Deskriptor
<entity>
<ejb-name>Unternehmen</ejb-name> <cmp-field>
<field-name>data.firma</field-name> </cmp-field>
<cmp-field>
<field-name>data.adresse.strasse</field-name> </cmp-field>
<cmp-field>
<field-name>data.adresse.plz</field-name> </cmp-field>
<cmp-field> <field-name>data.adresse.ort</field-name> </cmp-field>
<cmp-field>
<field-name>data.website</field-name> </cmp-field> ...
</entity>
20© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Überblick
• Software Entwicklungsumgebung• Application Server• XML based Web Development• Cocoon 2.0• Systemarchitektur• Aspekte der Client Architektur• Aspekte der Server Architektur• Fazit
11
21© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Transformation mit XSLT
...<xsl:template match=“ARTIKEL"> <b><xsl:value-of select="NAME"/></b>, OrderUnit: <xsl:value-of select=„ORDER_UNIT"/><br/></xsl:template>...
...<ARTIKEL> <ARTIKEL_ID>10021</ARTIKEL_ID> <NAME>Bananenkarton</NAME> <ORDER_UNIT>Stück</ORDER_UNIT></ARTIKEL>...
<b>Bananenkarton</b>, OrderUnit: Stück<br/>
XML-Quelle
XSL-Stylesheet
Output
22© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
XSLTProzessor
XSLT Prozessor
news.html
news.txt
news.csv
docbook.xml
news.xml
html.xsl
txt.xsldocbook.xsl
csv.xsl
12
23© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
XSLSheets
XSLSheets
XMLDokument
Idee: XSLT im Servlet
Web Server
Servlet Engine
XSLT Prozessor
XSLSheets
XSLSheets
XSLSheets
24© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Überblick
• Software Entwicklungsumgebung• Application Server• XML based Web Development• Cocoon 2.0• Systemarchitektur• Aspekte der Client Architektur• Aspekte der Server Architektur• Fazit
13
25© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Cocoon - Pipeline Model
article.xsp
article-standard.xsl
global2html.xsl
HTM
L-Serialiser
Generator
Transformer
Transformer
Serialiser
Generator Transformer Transformer Serialiser
26© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Ablauf
XSPGenerator
Daten
XSLTTransformator
XSLTTransformator
XMLDokument
Page Filter
XMLDokument
Global
Serializer
HTMLDokument
XMLDokument
XSP mitSQL Query
Serializer
XMLDokument
Filter View
Serializer
XMLDokument
Content View
14
27© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Screenshot 1. ContentView
28© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Screenshot 2. Debug Pipe - FilterView
15
29© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Screenshot HTML-Seite
30© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Cocoon Views
Client Cocoonrequest
?cocoon-view=debug
Client Cocoon
<map:view name="debug" from-label="debug"> <map:serialize type="xml"/></map:view><map:match pattern=".../*.xsp"> <map:act set="outpark"/> <map:act set="bkk"/> <map:generate type="serverpages"
src=".../pages/{1}.xsp"/> <map:transform src=".../filter/
{1}-standard.xsl"/> <map:label name=„debug"/> <map:transform src=".../style/
global2html.xsl"/> <map:serialize type="html"/></map:match>
16
31© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Catalog-LösungB2B-Lösung
Integration JSP / XSP: Ziel
CocoonJSPJSP XSP XSP
Apache Webserver
Tomcat Servlet-Engine
Cocoon XSPXSPJSP
JSP
MS-SQL-ServerMS-SQL-Server
32© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Überblick
• Software Entwicklungsumgebung• Application Server• XML based Web Development• Cocoon 2.0• Systemarchitektur• Aspekte der Client Architektur• Aspekte der Server Architektur• Fazit
17
33© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Kombinierte Architektur
Cocoon
Datenbank
XSP XSPXSPXSP
ParserBean
Bestellung
EJB Taglib
Application ServerCocoon
Datenbank
Bestellung
EJB Taglib / Actions
ParserBean
Bestellung
XSP
Kunde
XSP XSP XSP
GUI ClientKommandozeileWeb Client Fremdsystem
articel.xsp
ESQL Taglib
34© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Trennung von Lese- und Schreibzugriffen
Artikel Tabelle
XSPeditarticle
Anzeige in der Viewper eSQL TagLibÄnderungen /
Schreibzugriffe(transaktional)
SBArticleService
EBArticle
XSPeditarticle
Action
18
35© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Aufgabenverteilung
Enterprise JavaBeans• Geschäftsobjekte• Transaktionen• Umwandlung zwischen XML und Objekten
Cocoon• Präsentation• Reine Abfragen• Abfrage von Massendaten (mit SQL)• XML Dokumente erzeugen (z.B. BMECat Katalog)
36© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Logische Architektur
Client1. Generation
Client2. Generation
Client3. Generation
Datenbank
GeschäftsobjekteDaten
GeschäftsobjekteFunktionen
Prozesse übermehrere Geschäftsobjekte
HelperBean
Präsenation bzw.Präsentationslogik
Bean
ActionXSPJSP
EinkaeuferTabelle
BestellungTabelle
PositionTabelle
SBEinkaeuferService
EBPosition
SBBestellungService
SBPositionService
EBEinkäufer
EBBestellung
SBBestellService
19
37© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Überblick
• Software Entwicklungsumgebung• Application Server• XML based Web Development• Cocoon 2.0• Systemarchitektur• Aspekte der Client Architektur• Aspekte der Server Architektur• Fazit
38© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Daten
Präsentationsschichtz.B. Cocoon mit XML,XSL und XSP
Anwendungsschichtz.B. EJB oder CORBA
Persistenzschichtz.B. RDBMS od. ODBMS
Erweiterte Drei-Schichten-Architektur
Logik StyleContent
Businesslogik
20
39© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Cocoon-Actions
Client Cocoon
Front Controller
request
?cocoon-action=warenkorb-bestellen
delegate
MS SQL Server
get JBoss
Application Server
Warenkorb
BestellungPosition
create
Command /Action
Client Cocoon
<map:actionname="warenkorb-
bestellen"src="de.oio.outpark.cocoon.actions.WarenKorbBestellenAction"
/>
Warenkorb
Bestellung
Position
createWarenKorb
BestellenAction
40© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Sequenzdiagramm für MVC
21
41© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
JSP
XSP-Frac Includer - Beispiel
XSP
XSP-Frac XSP-Frac
42© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Screenshot für einen Include
22
43© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Custom Tag
<xsp:page language="java"
xmlns:catalog="http://www.oio.de/ catalog">
</catalog:get-warenkorb>
</xsp:page>
Client request
Cocoon
SQLTransformer
Custom TagLibClient
Catalog lib
44© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Überblick
• Software Entwicklungsumgebung• Application Server• XML based Web Development• Cocoon 2.0• Systemarchitektur• Aspekte der Client Architektur• Aspekte der Server Architektur• Fazit
23
45© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
J2EE Patterns
• Composite View• View Helper (mit Java Beans als Helper Klassen)• Value Objects• Service Locator• Session Facade• Value List Handler (Katalog-Suche mit je 10 Treffern)• Service Activator ( MDB)
46© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Value Objects
DBPERSON
JBoss (EJB Server)
PersonBean(EntityBean)
Cocoon
XSP
PersonData(JavaBean)
24
47© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Zugriff ohne Value Objects
48© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Zugriff mit Value Objects
25
49© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
... <xsl:output method="text"/>
<xsl:template match="parameters">
Sehr geehrter <xsl:value-of select="parameter[@name='anrede']"/> <xsl:value-of select="parameter[@name='name']"/>
für Sie wurde wie folgt ein Account eingerichtet:
Username: <xsl:value-of select="parameter[@name='username']"/> Passwort: <xsl:value-of select="parameter[@name='passwort']"/>
</xsl:template>
<<Session Bean>>MailGenerator
EJB
getMailData()
Mailtext-Generierung mit XSLT
<parameters> <parameter name="anrede"> Herr </parameter> <parameter name="name"> Müller </parameter> <parameter name="username"> hmueller </parameter> <parameter name="passwort"> jdB3J21b </parameter></parameters>
buildParameterList()XSL
XSLXSL
getStyleSheet()
50© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Ersatz für Batchprozesse
JBoss Application Server
WebmilesEJB
WebmilesTimer
getLocalData
sendLocalDataToWebmiles()
26
51© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Szenario für asynchrone Benachrichtigung
• Beispiel: Information von Lieferanten über neue Bestellung• Problem:
– Bei grossen Bestellungen (Sammelbestellungen) müssen evtl.viele Lieferanten benachrichtigt werden
– Blockierung des Clients– Benachrichtigung stellt sich für den User des Systems als
autonomen Prozess dar.• Lösung:
– Externer JMS Client (bei Application Servern ohne Unterstützungfür MessageDrivenBeans)
– MDB
52© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Szenario mit integriertem MDB
JMS- Provider
BestellungMailBean (MDB)
Lieferant1
Lieferant2
BestellungServiceBean
Bestellung
PositionPosition
MailServer
ClientBestellungServiceBean
Bestellung
PositionPosition
BestellungMailBean (MDB)
Lieferant1
Lieferant2
27
53© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Vergleich Vorher – Nachher
54© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Entstandener zusätzlicher Aufwand
• Implementierung onMessage()– kein zusätzlicher Aufwand aufgrund
• des bereits implementierten MessageListener Interface• eines sowohl Client- als auch Server-seitig genutzten
SessionBean Creators• des J2EE Patterns Service Locator
• Deployment MessageDrivenBean– Erzeugung eines Deployment Descriptors– Konfiguration des Application Servers für den Zugriff auf das neue
Topic
Fazit: Gesamtaufwand < 1h
28
55© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Versenden von PDF-Dokumenten
Container
EJB Server
AusschreibungService
JMSClient
Topic
Brief Versender
JavaMail
FOP
JMSClient
Xalan
JMSClient
Xalan
FOP
JavaMail
GIFs
Ausschreibung2fo.xsl
56© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Transaktionsklammern beim BMECat Import
• Problem: zu importierender Katalog kann sehr gross sein• Lösungsansatz:
– nicht um kompletten Katalog eine Transaktion legen, sondern umeinzelne logische Bestandteile des Kataloges
<?xml version="1.0" encoding="ISO-8859-1"?><!-- DOCTYPE BMECAT SYSTEM "bmecat_new_catalog.dtd" --><BMECAT version="1.01"><HEADER> <CATALOG> <CATALOG_ID>eClass40</CATALOG_ID> ... </CATALOG>
<BUYER> ... </BUYER>
<SUPPLIER> ... </SUPPLIER>
</HEADER><T_NEW_CATALOG> <CATALOG_GROUP_SYSTEM> <GROUP_ID>23170204</GROUP_ID> </CATALOG_GROUP_SYSTEM>
<ARTICLE mode="new"> <SUPPLIER_AID>6ES7031-0AA00-8AB0</SUPPLIER_AID> <ARTICLE_DETAILS> ... </ARTICLE_DETAILS> <ARTICLE_PRICE_DETAILS> <ARTICLE_PRICE> ... </ARTICLE_PRICE> ... </ARTICLE_PRICE_DETAILS> </ARTICLE>
<ARTICLE_TO_CATALOGGROUP_MAP> <ART_ID>6ES7031-0AA00-8AB0</ART_ID> <CATALOG_GROUP_ID> 23170204</CATALOG_GROUP_ID> </ARTICLE_TO_CATALOGGROUP_MAP>
</T_NEW_CATALOG></BMECAT>
29
57© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Überblick
• Software Entwicklungsumgebung• Application Server• XML based Web Development• Cocoon 2.0• Systemarchitektur• Aspekte der Client Architektur• Aspekte der Server Architektur• Fazit
58© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Fragen
30
59© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Generischer BAPI Aufruf mit Cocoon
SAP-System
XMLDokument
XMLDokument
BAPI Name
BAPI Meta Daten
BAPI ausführen
BAPI Rückgabe
Formular
Formular
Formular
60© 2001-2002 Orientation in Objects GmbHe-Procurement mit JBoss EJB Server und Apache Cocoon 2
Vielen Dank für IhreAufmerksamkeit!
Torben Jäger [email protected] Köhler [email protected] http://www.oio.de