axis2, cxf u. jax-ws ri im vergleich - · pdf filesoap4j, apache soap und axis ibm soap4j...
Post on 06-Feb-2018
224 Views
Preview:
TRANSCRIPT
Axis2, CXF und
JAX-WS RI im
Vergleich
predic8 GmbH
Moltkestr. 40
53173 Bonn
Tel: (0228)5552576-0
www.predic8.de
info@predic8.de
© 2008 predic8 GmbHAxis2, CXF und JAX-WS RI im Vergleich
Inhalt
Einführung
Die Standards: JAXB, JWS, JAX-WS
Axis2
CXF
JAX-WS RI / Metro
Deployment
Fazit
2
© 2008 predic8 GmbHAxis2, CXF und JAX-WS RI im Vergleich
SOAP Toolkits für Java
3
Apache SOAP
Axis1JAX-RPC
Axis2
Tuscany
JAX-WS
JAX-RS JAX-WS RI
CXF
XFire
ServiceMix
ab JDK 6
implementiert
verwendet
eingeschränkt
IBM
WebSphere
© 2008 predic8 GmbHAxis2, CXF und JAX-WS RI im Vergleich
5
Beziehungen zwischen Java Standards
JAX-WS WSEE
JWS JAXB
JSR-250 JAX-RPC
JEE EJB
Servlet
JSR-171 JAX-R
SAAJ DOM
© 2008 predic8 GmbHAxis2, CXF und JAX-WS RI im Vergleich
6
XML / Java Binding
Klasse Schema
JAXB
1 1
**
Objekte DokumenteDokumenteDokumente
*
ObjekteObjekte
1
1 1
1
© 2008 predic8 GmbHAxis2, CXF und JAX-WS RI im Vergleich
7
JSR-181: Web Services Metadata
import javax.jws.WebService;
import javax.jws.WebMethod;
@WebService
public class HelloWorldService {
@WebMethod
public String helloWorld() {
return "Hello World!";
}
}
© 2008 predic8 GmbHAxis2, CXF und JAX-WS RI im Vergleich
8
Funktionsweise
A.Java@WebService
public void foo()
{
...
}
A.class
Executable Binary
+ Metadata
JSR-181 Runtime
-Semantic Checks
- WSDL Generierung
-Lifecycle
compile deploy
© 2008 predic8 GmbHAxis2, CXF und JAX-WS RI im Vergleich
9
JAX-WS 2.1 Unterstützung für WS Standards
SOAP 1.1, 1.2
WSDL 1.1 nicht WSDL 2.0
WS-I Basic Profile 1.0
Annotations JSR-175
WS Metadata JSR-181
Enterprise WS JSR-109
WS Security JSR-183
© 2008 predic8 GmbHAxis2, CXF und JAX-WS RI im Vergleich
10
JAX-WS Non-Goals
Rückwärtskompatibilität mit JAX-RPC 1.X
Plugable Data Binding
Unterstützung für SOAP Encoding
Unterstützung für J2SE < 5.0
© 2008 predic8 GmbHAxis2, CXF und JAX-WS RI im Vergleich
12
SOAP4J, Apache SOAP und AXIS
IBM SOAP4J
Apache SOAP
Axis1
Architektur 1
Architetur 2
Basis für Apache SOAP
Basiert auf DOM
Neuimplementierung mit SAX
Axis2
Architektur 3
Architektur 4 Neuimplementierung mit StAX
© 2008 predic8 GmbHAxis2, CXF und JAX-WS RI im Vergleich
13
Axis2 Features
Pojo Web Services
Spring Integration
WSDL2Java und Java2WSDL Generator
SOAP with Attachments
REST Style Web Services
Unterstützung für einige WS-* Standards
Modulare Struktur
Deployment: Service und Modul Archive
© 2008 predic8 GmbHAxis2, CXF und JAX-WS RI im Vergleich
14
Axis2 Architektur
Modul Modul Modul
Axis2Core
SOAP WSDL WS-Addressing
Kern Modul
Information
Model
Kern Modul
SOAP
Processing
Model
Kern Modul
Client-API
...
© 2008 predic8 GmbHAxis2, CXF und JAX-WS RI im Vergleich
15
Axis2 Repository
Web Container
Services
Web
Service
Web
Service
Axis2 Web
Application
Modules
Module Module Module
Axis2 Client
Modules
Module Module Module
© 2008 predic8 GmbHAxis2, CXF und JAX-WS RI im Vergleich
16
Data Binding
Bound
Object
z.B. mit
XMLBeans
AXIOM
OM
AXIOM
OM
Bound
Object
z.B. ADB
XML
© 2008 predic8 GmbHAxis2, CXF und JAX-WS RI im Vergleich
17
JAX-WS mit Axis2
Ab Axis2 Version 1.2
Axis2 1.4.1 unterstützt JAX-WS 2.0 und JAXB 2.0
JAXB Unterstützung ist noch „experimental“ (Axis2 1.4.1)
JAXB 2.1 u. JAX-WS 2.1 wahrscheinlich ab Version 1.5
Axis2 Subprojekt: axis2-jaxws
wsgen und wsimport aus Java SDK 6 verwenden
Auch ?wsdl verwendet Java 6 Werkzeuge
© 2008 predic8 GmbHAxis2, CXF und JAX-WS RI im Vergleich
Apache CXF
Nachfolger von Celtix und Xfire
Services Framework für die „Protokolle“
SOAP, REST, JMS, HTTP, …
Open Source unter ASF Lizenz
Lightweight
19
© 2008 predic8 GmbHAxis2, CXF und JAX-WS RI im Vergleich
Frontend
Programmiermodell für Web Services
Verfügbare Frontends:
Simple
JAX-WS
© 2008 predic8 GmbHAxis2, CXF und JAX-WS RI im Vergleich
Aegis Databinding
Bildet Java Objekte auf XML ab
Bietet sinnvolles Mapping ohne grossen Aufwand
Detailierte Customization ist möglich
War Databinding in XFire
Kann ohne CXF und XFire eingesetzt werden
Nur für Einsatz mit Simple Frontend empfohlen (dokumentiert und
getestet)
21
© 2008 predic8 GmbHAxis2, CXF und JAX-WS RI im Vergleich
Aegis für Web Services
Manche finden das Aegis Binding eleganter als JAXB
Für Client ungeeignet, da wsdl2java fehlt
Keine Unterstützung für elementForm= “unqualified“
Kann alles deserialisieren
Kann nur deserialisieren wenn Mapping vorliegt
22
© 2008 predic8 GmbHAxis2, CXF und JAX-WS RI im Vergleich
CXF Bus
Bietet gemeinsam genutzte Resourcen an
Resourcen:
WSDL Manager
Binding Factory Manager
HTTP Destination Factory
Basiert auf Spring
Wird per DI konfiguriert
Verwaltet Erweiterungen
Interceptor Provider
23
© 2008 predic8 GmbHAxis2, CXF und JAX-WS RI im Vergleich
Spring Konfiguration für RM
24
<cxf:bus>
<cxf:features>
<cxf:logging />
<wsa:addressing />
<wsrm-mgr:reliableMessaging>
<wsrm-policy:RMAssertion>
<wsrm-policy:BaseRetransmissionInterval Milliseconds="4000" />
<wsrm-policy:AcknowledgementInterval Milliseconds="2000" />
</wsrm-policy:RMAssertion>
<wsrm-mgr:destinationPolicy>
<wsrm-mgr:acksPolicy intraMessageThreshold="0" />
</wsrm-mgr:destinationPolicy>
</wsrm-mgr:reliableMessaging>
</cxf:features>
</cxf:bus>
© 2008 predic8 GmbHAxis2, CXF und JAX-WS RI im Vergleich
Signieren von Nachrichten mit WSS4J
25
Client ServerWSS4J WSS4J
Keystore
PublicKey
Client
PublicKey
Server
PrivateKey
Keystore
PublicKey
Client
CN = Client
© 2008 predic8 GmbHAxis2, CXF und JAX-WS RI im Vergleich
Web Services Interoperability Toolkit WSiT
Früherer Projektname: Tango
Bestandteil von Glassfish V2
Open Source Implementierung von WS-* Standards
Ziel:Interoperabilität mit .NET und WCF
27
© 2008 predic8 GmbHAxis2, CXF und JAX-WS RI im Vergleich
Metro
28
Reliability Transaction Security
Core
Basic web services
JAXB, JAXP, StAX, SAAJ, …
Transports
…
Quelle: https://metro.dev.java.net/discover
© 2008 predic8 GmbHAxis2, CXF und JAX-WS RI im Vergleich
Java 1.5 VM
JAX-WS in JEE Container (< Version 5)
30
Tomcat
BookWebApp
JAX-WS Servlet
@WebService
class BookService
Shared Loader
JAX-WS
JAXB
© 2008 predic8 GmbHAxis2, CXF und JAX-WS RI im Vergleich
Deployment in JEE 5 Server
31
Glassfish Application Server
Web Container
Book Web App
@WebService
Class BookService
© 2008 predic8 GmbHAxis2, CXF und JAX-WS RI im Vergleich
Deployment in VM
32
Endpoint.publish(“http://localhost:8080/book“,new BookServiceImpl())
VM >= 1.5
@WebService
Class BookService
© 2008 predic8 GmbHAxis2, CXF und JAX-WS RI im Vergleich
34
SOAP Engine Features
Feature Axis1
1.4
Axis2
1.4.1
CXF
2.1.3
JAX-WS RI
2.1.5
Basic Profile 1.1 Compilant x x x x
JAX-RPC x
JAX-WS (x) x x
POJO Services x x x
MTOM x x x
REST Support x JAX-RS - (JAX-RS RI)
© 2008 predic8 GmbHAxis2, CXF und JAX-WS RI im Vergleich
Unterstützung für WS-* Standards (Stand Juli 2008)
Standard Axis2 CXF JAX-WS/Metro
WS-Addressing X X X
WS-Coordination X(2) X
WS-MetadataExchange
WS-Policy X X X
WS-ReliableMessaging X(3) X X
Web Services Security X(1) X(4) X
WS-SecureConversation X(1) X
WS-SecurityPolicy X
WS-Transaction X(2) X
WS-Federation
35
(1) Unterstützt durch das zusätzliche Modul Apache Rampart
(2) Unterstützt durch das zusätzliche Modul Apache Kandula2
(3) Unterstützt durch das zusätzliche Modul Apache Sandesha2
(4) über Apache WSS4J Interceptor
© 2008 predic8 GmbHAxis2, CXF und JAX-WS RI im Vergleich
Fazit
JAX-WS und JAXB sind Standard
Mit JAX-WS sind Axis2, CXF und RI austauschbar
Axis2
Bietet beste Schema Unterstützung
CXF
Ist leichtgewichtig
Am besten (mit Spring) integrierbar
JAX-WS RI
Einfach einzusetzen
Ausgereift
Bietet mit Metro beste WS-* Unterstützung
36
top related