37
Axis2, CXF und JAX-WS RI im Vergleich predic8 GmbH Moltkestr. 40 53173 Bonn Tel: (0228)5552576-0 www.predic8.de [email protected]

Axis2, CXF u. JAX-WS RI im Vergleich - · PDF fileSOAP4J, Apache SOAP und AXIS IBM SOAP4J Apache SOAP Axis1 Architektur 1 Architetur 2 ... Java 1.5 VM JAX-WS in JEE Container (

  • Upload
    vukien

  • View
    224

  • Download
    1

Embed Size (px)

Citation preview

Axis2, CXF und

JAX-WS RI im

Vergleich

predic8 GmbH

Moltkestr. 40

53173 Bonn

Tel: (0228)5552576-0

www.predic8.de

[email protected]

© 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

Die Standards:

JWS, JAXB und

JAX-WS

4

© 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

2.

4

Axis2

© 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

Apache CXF

predic8 GmbH

Molkestr. 40

53173 Bonn

Tel: (0228)5552576-0

www.predic8.de

[email protected]

© 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

JAX-WS RI und Metro

26

© 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

Deployment mit

JAX-WS

29

© 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

Fazit

33

© 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

? ?

??

?Fragen ?