WebObjects 5

Werbung
WebObjects 5
Alternative Webservice Frameworks
(KFK GC/GT)
Betreuung
Siegfried Benkner
Gerhard Engelbrecht
Autoren
Peter Beran
[email protected]
0200945
Martin Köhler
[email protected]
0125955
Alexis Robin Rondeau
[email protected]
0147005
Wien, am 16. Dezember 2004
Inhaltsverzeichnis
1
PRODUKTSPEZIFIKATIONEN....................................................1
1.1 ALLGEMEIN............................................................................... 1
1.2 FEATURES (LT. HERSTELLER).......................................................... 1
1.3 ANFORDERUNGEN ....................................................................... 2
2
DEVELOPMENT WORKFLOW .....................................................4
2.1 MODELLIERUNG DER DATEN ........................................................... 4
2.1.1 EOModeler ............................................................................... 4
2.2
ERSTELLEN DER APPLIKATION ......................................................... 5
2.2.1 Project Builder .......................................................................... 5
2.3
EINSTELLEN DER APPLIKATION ........................................................ 5
2.3.1
2.3.2
2.3.3
2.3.4
Web Service Assistant ................................................................ 5
Web Object Builder.................................................................... 5
Interface Buidler ....................................................................... 6
Deployment/WebObjects Application Server .................................. 6
3
CODE BEISPIEL........................................................................6
3.1 SERVICE .................................................................................. 6
3.2 CLIENT ................................................................................... 7
3.3 SICHERHEIT.............................................................................. 9
4
VERZEICHNISSE ....................................................................11
4.1 ABKÜRZUNGSVERZEICHNIS .......................................................... 11
4.2 QUELLENVERZEICHNIS ................................................................ 11
KFK GC/GT
Alternative Webservice Frameworks
1 Produktspezifikationen
1.1 Allgemein
Produktbeschreibung: “WebObjects is Apple's suite of tools and object-oriented
frameworks for creating and deploying scalable, reusable web and Java
applications for the Internet and intranets.”
Hersteller: Apple
Preis: 699,-- US Dollar (ca. 525,-- Euro)
Produkt Informationen: http://www.apple.com/webobjects/
Produkt Dokumentation:
http://developer.apple.com/documentation/WebObjects/WebObjects.html
1.2 Features (lt. Hersteller)
Entwicklung (Development)
•
schnelle Projektentwicklung
•
Ansprechbarkeit
der
Web
Services
mit
Klienten
in
den
Programmiersprachen Java, AppleScript, Perl and DotNet
•
3 Schichten orientierte Applikationsentwicklung (user interface, business
logic, data access)
•
Web Services basieren am AXIS Framework
Unterstützte Technologien
•
EJB
•
ORB (z.b. Java RMI-IIOP)
•
JTA/JTS (J2EE technologies)
•
SOAP (dynamische Erzeugung von Web Services mittels WSDL, XML)
•
JDBC und JNDI data sources
•
JSP und Servlet Support
•
JNDL
Beran, Köhler, Rondeau
Seite: 1
KFK GC/GT
Alternative Webservice Frameworks
Datenmanagement
•
Tools zur Erstellung, Konfiguration, Reverse Engineering, Testen von
Datenbanken
•
Simultaner
Zugriff
auf
verschiedene
Datenbankplattformen
(Oracle,
MySQL, MSSQL, …)
Frontend bzw. Webpräsenz
•
Templates zur Generierung von HTML, XML, SMIL, Swing
•
Tool zur schnellen Erstellung von Webseiten (data-driven, multi-lingual)
Installation und Einsatz (Deployment)
•
schnelles Deployment auf J2EE und J2SE „kompatiblen“ Servern
•
Skalierbarkeit durch Clustering Support
1.3 Anforderungen
Development Platforms
•
Mac OS X Server v10
•
Windows 2000 Professional SP3
Deployment Platforms
•
Mac OS X Server v10
•
Windows 2000 Professional SP3
•
Solaris 8
Supported Application Types
•
Database-Driven Web Applications
•
Web Services
•
Java Client Web Applications
•
JavaBeans Web Applications
•
JavaServer Pages and Servlets
Beran, Köhler, Rondeau
Seite: 2
KFK GC/GT
Alternative Webservice Frameworks
Supported Applikation Server
•
Apache Tomcat 3.2.4 and 4.0.5
•
BEA WenLogic 7.0
•
IBM WebSphere 4.0.4
Supported Database Server
•
Microsoft SQL Server 2000
•
MySQL 3.23.51
•
OpenBase 7.0.8
•
Oracle 8.1.7 und 9.2.0.1
•
Sybase ASE 12.5
Supported Web Server
•
Sun ONE Web Server 6.0 SP2
•
Apache 1.3.9 und 1.3.26
•
Microsoft Internet Information Server 5.0
Beran, Köhler, Rondeau
Seite: 3
KFK GC/GT
Alternative Webservice Frameworks
2 Development Workflow
Auf welche Weise entwickle ich meine eigenen Webapplikation?
2.1 Modellierung der Daten
Für die zu modellierende Datenbank, stellt
WebObjects ein leistungsfähiges graphisches
Werkzeug zur Verfügung, den EOModeler.
2.1.1 EOModeler
Mit diesem Tool können neue Datenbanken
modelliert werden aber auch ein komplettes
Reverse
Engineering
Datenbanken
bereits
durchgeführt
existierender
werden.
Die
„persistence Engine“ generiert zur Laufzeit
automatisch
Java
Objekte
aus
JDBC
Datenbanken und aus JNDI Services. Es muss dazu kein SQL Code geschrieben
werden (vgl. EJB EntityBean). Es muss nur die Business Logik implementiert
werden, welche dann mit den generierten Datenmodellen kommuniziert. Somit
Beran, Köhler, Rondeau
Seite: 4
KFK GC/GT
Alternative Webservice Frameworks
wird Datenbankplattformunabhängigkeit garantiert und es findet sozusagen eine
transparenter Zugriff auf die Datenquellen statt.
2.2 Erstellen der Applikation
Der nächsten Schritt im Development Workflow Prozesses ist die grundlegenden
Systemkomponenten zu programmieren, sei es nun eine Java Swing Applikation,
ein Webservice oder ein Servlet.
2.2.1 Project Builder
Mit diesem Tool werden die initialen Web Services, HTML Seiten oder auch Java
Applikationen erzeugt. Prototypen ohne Business Logik können für alle Typen
automatisch generiert werden. Project Builder erzeugt keinen Code der schwer
zu lesen ist, da er sich auf das vorher erzeugte Datenmodell stützt und den Code
dynamisch generiert. Applikationskomponenten können einfach wiederbenutz
werden und auch inkrementelles Entwickeln wird damit unterstützt.
2.3 Einstellen der Applikation
2.3.1 Web Service Assistant
Diese Entwicklungsumgebung für Apple Web Services stellt ein (deaktiviertes)
Default Web Service zur Verfügung, von welchem bei der Entwicklung die
Methoden abgeleitet werden können. Es kann das XML Interface des Web
Services definiert und davon automatisch ein WSDL Dokument generiert werden.
Weiters können Client Applikationen zum Testen der Web Services generiert
werden bzw in den Programmiersprachen Cocoa, C++, AppleScript und Java
implementiert werden. Zudem können hier auch Java Stubs ausgehend von den
WSDL Dokumenten erzeugt werden.
2.3.2 Web Object Builder
Der WebObjects Builder ist ein visuelles Entwicklungsstudio, eine so genante
IDE. Es dient zur Entwicklung von Daten intensiven Web Seiten und inkludiert
viele wieder verwendbare Web Komponenten wie zum Beispiel automatisch
generierte Tabellen, JavaScript und XML.
Beran, Köhler, Rondeau
Seite: 5
KFK GC/GT
Alternative Webservice Frameworks
2.3.3 Interface Buidler
Java Clients offerieren eine dynamische, interaktive Benutzung. Dabei bietet
WebObjects die Möglichkeit den Java Client Assistant zur Generierung des
Layouts zu verwenden. Mit dem InterfaceBuilder können dann Swing Interfaces
erstellt werden, in die man wiederum Tabellen und Datenbank Objekte
integrieren und diese mit den Java User Interface Objekten verbinden kann.
2.3.4 Deployment/WebObjects Application Server
Für das Deployment kann unter WebObjects unter dem eigens mitgelieferten
WebObjects J2SE Application Server und jedem anderen J2EE Application Server
gewählt werden, weil die Applikationen den offenen Standards genügen.
WebObjects Application Server ist ein 3-tier Applikationsserver. Diese bietet
Unterstützung für Clustering, Load Balancing, Session Management und für den
automatischen Applikationsneustart. Außerdem sind Tools für die remote
Konfiguration, für Logging und Monitoring eingebaut. Eine unlimitierte Lizenz ist
beigelegt.
Für das Deployment kann trotzdem auch jeder andere J2EE Applikationsserver
wie zum Beispiel Apache Tomcat, BEA WebLogic aber auch IBM WebSphere
verwendet werden.
3 Code Beispiel
3.1 Service
Service Code: nicht anders; ganz normales Java Web Service
public class Calculator extends Object {
public static double add(double addend1, double addend2) {
double sum = addend1 + addend2;
return sum;
}
public static double subtract(double minuend, double subtrahend) {
double difference = minuend - subtrahend;
return difference;
}
public static double multiply(double multiplicand1, double multiplicand2) {
double product = multiplicand1 * multiplicand2;
return product;
}
Beran, Köhler, Rondeau
Seite: 6
KFK GC/GT
Alternative Webservice Frameworks
public static double divide(double dividend, double divisor) {
double quotient = dividend / divisor;
return quotient;
}
}
Deployment des Web Services mittels:
WOWebServiceRegistrar.registerWebService(Calculator.class, true);
Die
Klasse
WOWebServiceRegistrar
(com.webobjects.webservices.appserver)
unterstützt Methoden zum Registrieren und Unregistrieren von Web Services. Es
können
Security
delegates,
XSLT
(Extensible
Stylesheet
Language
Transformations) Scripts usw. eingestellt werden.
3.2 Client
Code: invoke Code ist rot dargestellt
import java.net.*;
import java.util.Enumeration;
import com.webobjects.foundation.*;
import com.webobjects.webservices.client.*;
public class CalculatorClient extends Object {
/**
* Object through which the Web service's operations are invoked.
*/
private WOWebServiceClient _serviceClient = null;
/**
* Address for the Web service's WSDL document.
*/
private String _service_address =
"http://localhost:4210/cgi-bin/WebObjects/Calculator.woa/ws/Calculator?wsdl";
/**
*/
public CalculatorClient() {
super();
}
/**
* Obtains the Web service's operation names.
* @return the Web service's operation names.
*/
public NSArray operations() {
NSArray
operations
(serviceClient().operationsDictionaryForService(serviceName())).allValues();
NSMutableArray operation_names = new NSMutableArray();
Enumeration operations_enumerator = operations.objectEnumerator();
Beran, Köhler, Rondeau
=
Seite: 7
KFK GC/GT
Alternative Webservice Frameworks
while (operations_enumerator.hasMoreElements()) {
WOClientOperation
operation
(WOClientOperation)operations_enumerator.nextElement();
operation_names.addObject((String)operation.name());
}
return operation_names;
}
=
/**
* Invokes the Web service's operations.
* @param operation
operation to invoke;
* @param arguments
argument list;
* @return
value returned by the operation.
*/
public Double invoke(String operation, Object[] arguments) {
Object result = serviceClient().invoke(serviceName(), operation, arguments);
return (Double)result;
}
/**
* Obtains the Web service name.
* Normally one WSDL file describes one Web service,
* but it could describe one or more services.
* @return Web service name.
*/
public String serviceName() {
// 2
return (String)serviceClient().serviceNames().objectAtIndex(0);
}
/**
* Obtains an WOWebServiceClient through which service operations are invoked.
* @return Web service-client object.
*/
private WOWebServiceClient serviceClient() {
if (_serviceClient == null) {
_serviceClient = clientFromAddress(_service_address);
}
return _serviceClient;
}
/**
* Obtains a Web service-client object through which
* service operations can be invoked.
* @return Web service-client object.
*/
private static WOWebServiceClient clientFromAddress(String address) {
WOWebServiceClient service_client = null;
// Create the Web service's URL.
URL url;
try {
url = new URL(address);
}
catch (MalformedURLException e) {
Beran, Köhler, Rondeau
Seite: 8
KFK GC/GT
Alternative Webservice Frameworks
url = null;
}
// Get a service-client object.
service_client = new WOWebServiceClient(url);
// 3
return service_client;
}
}
Für das WebService wird das Interface WOWServiceClient verwendet. Quasi eine
„Hülle zusätzlicher Funktionalität“ über der Axis Schicht von Web Objects. Aufruf
des Web Services wie gewohnt über Methode invoke. Es handelt sich ja auch um
normale Java Web Services.
Es kann auch auf Kontext Informationen des http Requests zugegriffen werden.
Dies geht über die Klassen MessageContext und WOContext.
Code:
import com.webobjects.appserver.WOContext;
import org.apache.axis.MessageContext;
...
MessageContext message_context = MessageContext.getCurrentContext();
WOContext
context
(WOContext)message_context.getProperty("com.webobjects.appserver.WOContext");
Ein Servlet zum Webservice könnte dann so aussehen:
3.3 Sicherheit
Die Einbindung von Sicherheit funktioniert über security delegates Klassen die
Methoden von dem WOSecurityDelegate Interface implementieren. Hier können
spezielle
Sicherheitsmechanismen
processClientResponse,
Beran, Köhler, Rondeau
für
die
Methoden
processServerRequest,
processClientRequest,
processServerResponse,
Seite: 9
=
KFK GC/GT
onFaultClientRequest,
Alternative Webservice Frameworks
onFaultClientResponse,
onFaultServerRequest,
onFaultServerResponse implementiert werden.
Beran, Köhler, Rondeau
Seite: 10
KFK GC/GT
Alternative Webservice Frameworks
4 Verzeichnisse
4.1 Abkürzungsverzeichnis
Abk.
Erläuterung
EJB
HTML
J2EE
J2SE
JDBC
JNDI
JNLP
JSP
JTA
JTS
MYSQL
ORB
RMI-IIOP
SMIL
SOAP
WSDL
XML
Enterprise JavaBeans
HyperText Markup Language
Java 2 Platform, Enterprise Edition
Java 2 Platform, Standard Edition
Java Database Connectivity
Java Naming and Directory Interface
Java Network Launching Protocol
Java ServerPages
Java Transaction API
Java Transaction Service
My Structured Query Language
Object Request Broker
Remote Method Invocation - Internet Inter-Orb Protocol
Synchronized Multimedia Integration Language
Simple Object Access Protocol
Web Services Description Language
Extensible Markup Language
4.2 Quellenverzeichnis
[WebObjectsHome],
http://www.apple.com/webobjects/
[WebObjectsDocu],
http://developer.apple.com/documentation/WebObjects/WebObjects.html
[ServiceProviderExample],
http://developer.apple.com/documentation/WebObjects/Web_Services/index.ht
ml
[ServiceConsumerExample],
http://developer.apple.com/documentation/WebObjects/Web_Services/index.ht
ml
Beran, Köhler, Rondeau
Seite: 11
Herunterladen