Sergiy Barlabanov

Größe: px
Ab Seite anzeigen:

Download "Sergiy Barlabanov 30.09.2010"

Transkript

1 Sergiy Barlabanov

2 JBoss UML JEE Java Spring EJB OOP Hibernate 1 Einführung und Theorie 2 REST Ressource implementieren 3 Methods 4 Status und Fehlerhandling 5 Conneg (connent negotiation) 6 Caching 7 Conditional Requests 8 HATEOS 9 Transferring Metadata 10 RESTful Clients 11 Architekturüberlegungen

3 UML JBoss 1. Einführung und Theorie JEE Java Spring EJB OOP Hibernate

4 Für was steht REST REST - Representational State Transfer Keine Technologie Kein Protokoll Ein Architekturstil (wie z.b. SOA, EDA) hat theoretisch nichts mit HTTP zu tun praktisch - alle REST-basierte (RESTful) Systeme sind auf HTTP aufgebaut

5 Die Rolle des Protokolls Eine RESTful Architektur ist auf einem Application Layer Protokoll (z.b. HTTP) aufgebaut maximize the use of the pre-existing, well-defined interface and other built-in capabilities provided by the protocol (Caching, Routing, Security, Versionierung, usw.) minimize the addition of new application-specific features on top of it

6 Warum REST Man muss kein Rad neu erfinden - HTTP 1.1 definiert schon Adressieren, Fehlercodes, Versionieren, Datenkomprimierung, Conneg ( self-description and autodiscovery of media types and capabilities ), usw. Es gibt eine Menge von Tools auf dem Markt, die mit HTTP arbeiten: HTTP Servers, Routers, Browsers, Caches, Libraries Einfach zu entwickeln, testen und debuggen (browser, curl, wget, telnet, soapui, usw. usw.)

7 Was ist eine Ressource "Any information that can be named can be a resource: a document or image, a temporal service, a collection of other resources, a non-virtual object (e.g. a person), and so on..the intended conceptual target of a hypertext reference" (Roy Thomas Fielding)

8 Eigenschaften einer Ressource kann eindeutig mit einer URI identifiziert werden hat State - abhängig von der Zeit, z.b ein Produkt hat Preis und Lagerbestand kann anhand von im HTTP Standard definierten Methoden manipuliert werden (GET, POST, PUT, usw.) - Uniform Interface ist mit anderen Ressourcen verlinkt (HATEOS) kann mehrere Repräsentationen haben Ein Hardware-Bild als JPEG oder PNG Ein Produkt als JSON, XML, HTML, usw.

9 Ressource Repräsentation * " captures the current state of the resource A representation is a sequence of bytes, plus representation metadata to describe those bytes." (Roy Thomas Fielding) Repräsentation ist genau das, was zwischen einem Klient und einem Server ausgetauscht wird (XML, JSON, JPEG Datei, usw.)

10 Handyshop Produkte,Hardware,Tarife holen Produkte,Hardware,Tarife hinzufügen und löschen Produkte suchen

11 Service-Oriented public interface HandyShopService { List<ProductDTO> getproducts(date since, Date until, Integer limit); ProductDTO getproduct(string productid); HardwareDTO gethardware(string hardwareid); TariffDTO gettariff(string tariffid); } void addproduct(productdto newproduct); void removeproduct(string productid); ProductDTO updateproduct(productdto product); //...

12 RESTful Handyshop

13 Produkte holen > GET /handyshop/products?limit=1 HTTP/1.1 > User-Agent: curl/ > Host: localhost:8080 > Accept: application/json > Accept-Charset: UTF-8 > < HTTP/ OK < Server: Apache-Coyote/1.1 < Cache-Control: public, no-transform, max-age=600 < ETag: < Content-Type: application/json; charset=utf-8 < Transfer-Encoding: chunked < Date: Sun, 19 Sep :34:13 GMT [ { "id":"tmob-max-flat-m-1", "description":"max Flat M mit Nokia 6210", "tariff":"http://localhost:8080/handyshop/tariffs/tmob-maxflatm", "hardware":"http://localhost:8080/handyshop/hardware/nokia6210", "hardwareprice":1.00, "monthrate":30.00 },... ]

14 Produkt anlegen > POST /handyshop/products HTTP/1.1 > User-Agent: curl/ > Host: localhost:8080 > Accept: application/json > Content-Type: application/json; charset=utf-8 > Content-Length: 144 > { "description":"max Flat M mit Nokia 6210", "tariffid":"tmob-maxflatm", "hardwareid":"palmpre", "hardwareprice":100.00, "monthrate":50.00 } > < HTTP/ Created < Server: Apache-Coyote/1.1 < Location: < Content-Length: 0 < Date: Sun, 19 Sep :20:54 GMT

15 Produkt nicht gefunden > GET /handyshop/products/11 HTTP/1.1 > User-Agent: curl/ > Host: localhost:8080 > Accept: application/json > < HTTP/ Not Found < Server: Apache-Coyote/1.1 < Content-Type: text/html;charset=utf-8 < Content-Length: 0 < Date: Sun, 19 Sep :24:37 GMT

16 Resource Oriented Design (ROD) Ein RESTful Service wird als eine Sammlung von Ressourcen entworfen. Dabei sollen folgende Prinzipien berücksichtigt werden: Addressability Uniform and constrained interface (man weiss genau, welche Operationen werden unterstützt) Service soll representation-oriented sein Stateless Communication

17 JBoss UML JEE Java 2. REST Ressource implementieren Spring EJB OOP Hibernate

18 Frameworks für die Server-Seite Servlets JAX-RS 1.0, 1.1 (JBoss RestEasy, Sun Jersey, Apache CXF, Apache Wink) Spring 3.0 Restlet

19 JAX-RS public class ProductListResource private "application/xml"}) public Response Request UriInfo Date Date Integer limit) public Response UriInfo uriinfo, ProductRepresentation prdrpr) {...}

20 ProductListResource#getProducts > GET /handyshop/products?limit=1 HTTP/1.1 > User-Agent: curl/ > Host: localhost:8080 > Accept: application/json > Accept-Charset: UTF-8 > < HTTP/ OK < Server: Apache-Coyote/1.1 < Cache-Control: public, no-transform, max-age=600 < ETag: < Content-Type: application/json; charset=utf-8 < Transfer-Encoding: chunked < Date: Sun, 19 Sep :34:13 GMT [ { "id":"tmob-max-flat-m-1", "description":"max Flat M mit Nokia 6210", "tariff":"http://localhost:8080/handyshop/tariffs/tmob-maxflatm", "hardware":"http://localhost:8080/handyshop/hardware/nokia6210", "hardwareprice":1.00, "monthrate":30.00 },... ]

21 ProductListResource#createProduct > POST /handyshop/products HTTP/1.1 > User-Agent: curl/ > Host: localhost:8080 > Accept: application/json > Content-Type: application/json; charset=utf-8 > Content-Length: 144 > { "description":"max Flat M mit Nokia 6210", "tariffid":"tmob-maxflatm", "hardwareid":"palmpre", "hardwareprice":100.00, "monthrate":50.00 } > < HTTP/ Created < Server: Apache-Coyote/1.1 < Location: < Content-Length: 0 < Date: Sun, 19 Sep :20:54 GMT

22 public class "application/xml"}) public HardwareRepresentation String "application/xml"}) public Response String id, HardwareRepresentation "application/xml"}) public HardwareRepresentation String id, HardwareRepresentation hwrepr) {...} public Response String id) {...}

23 POJO public class HardwareRepresentation { private String id; private String name; private String manufacturer; private BigDecimal = "picture") private URI image; //... // getters, setters, etc.

24 UML JBoss 3. Methods JEE Java Spring EJB OOP Hibernate

25 HTTP Methods GET - fürs Auslesen, idempotent, cacheable PUT - fürs Anlegen/Aktualisieren, idempotent DELETE - fürs Löschen, idempotent POST - fürs Anlegen/Aktualisieren, nicht idempotent OPTIONS - sagt welche Methods unterstützt werden HEAD - wie GET, aber liefert nur Headers zurück TRACE, CONNECT

26 POST POST ist nicht idempotent, d.h. ein Aufruf darf nicht wiederholt werden POST statt PUT, wenn das Erzeugen oder Aktualisieren zu unterschiedlichen Ergebnissen führen kann Beispiel: beim Anlegen eines neuen Produktes wird productid vom Server generiert POST statt GET, wenn Request-URI zu lang wird (4-8K ist ganz oft die Begrenzung). Beispiel: Viren-Check einer Datei

27 Vorsichtig bei non-crud Operationen Tendenz ist prozedural zu implementieren. Das ist falsch. > POST /handyshop/validateorder?orderid=123 HTTP/1.1 Ressource-orientiert denken. Das ist besser. > GET /handyshop/orders/123/validationstatus HTTP/1.1

28 Order is valid > GET /handyshop/orders/123/validationstatus HTTP/1.1 > User-Agent: curl/ > Host: localhost:8080 > Accept: application/json > < HTTP/ OK < Server: Apache-Coyote/1.1 < Content-Type: application/json < Transfer-Encoding: chunked < Date: Tue, 21 Sep :15:21 GMT < {"status":"valid"}

29 Order is invalid > GET /handyshop/orders/456/validationstatus HTTP/1.1 > User-Agent: curl/ > Host: localhost:8080 > Accept: application/json > < HTTP/ OK < Server: Apache-Coyote/1.1 < Content-Type: application/json < Transfer-Encoding: chunked < Date: Wed, 22 Sep :23:22 GMT < { "status":"invalid", "errors":[ "delivery address is not specified", "receipt address is not specified", "credit card is expired"] }

30 OrderValidationStatusResource public class OrderValidationStatusResource private OrderDao public Response String orderid) { Order order = orderdao.findbyid(orderid); if (order == null) { return Response.status(Response.Status.NOT_FOUND).build(); } if (order.isvalid()) { return Response.ok(ValidationStatusRepresentation.ok()).build(); } List<String> errors = order.getvalidationerrors(); return Response.ok( ValidationStatusRepresentation.error(errors)).build(); }

31 UML JBoss 4. Status und Fehlerhandling JEE Java Spring EJB OOP Hibernate

32 Status- und Fehler-Codes Reuse HTTP Status Codes 1xx - informational 2xx - successful (200 OK, 201 Created) 3xx - redirection (301 Moved, 304 Not modified) 4xx - client errors (400 Bad request, 401 Unauthorized) 5xx - server errors (500 Internal error, 501 Not implemented) If not enough, use custom HTTP header Dazu noch eine Fehlererklärung im Body mitsenden HTTP Statuscodes auch im Erfolgsfall nutzen HTTP Spec definiert ganz genau welche Statuscodes mit welchen Methoden kombinierbar sind

33 Statuscodes public Response UriInfo uriinfo, ProductRepresentation representation) { if (representation.gethardwareid() == null) { return Response.status(Response.Status.BAD_REQUEST).header("X-Enhanced-Status", "EMPTY_FIELD").entity("empty hardwareid").type(mediatype.text_plain_type).build(); } Product newproduct = productresource.maprepresentation(representation); newproduct = catalog.addproduct(newproduct); return Response.created( productresource.geturi( newproduct.getid(), uriinfo.getbaseuri())).build(); }

34 Erfolgsfall > POST /handyshop/products HTTP/1.1 > User-Agent: curl/ > Host: localhost:8080 > Accept: application/json > Content-Type: application/json; charset=utf-8 > Content-Length: 144 > {...} < HTTP/ Created < Server: Apache-Coyote/1.1 < Location: < Content-Length: 0 < Date: Wed, 22 Sep :21:46 GMT

35 Fehlerfall > POST /handyshop/products HTTP/1.1 > User-Agent: curl/ > Host: localhost:8080 > Accept: application/json > Content-Type: application/json; charset=utf-8 > Content-Length: 119 > {...} < HTTP/ Bad Request < Server: Apache-Coyote/1.1 < X-Enhanced-Status: EMPTY_FIELD < Content-Type: text/plain < Content-Length: 16 < Date: Wed, 22 Sep :26:33 GMT < Connection: close < empty hardwareid

36 Exceptions "application/xml"}) public HardwareRepresentation String id) { Hardware hardware = catalog.findhardware(id); if (hardware == null) { throw new NoLogWebApplicationException( Response.Status.NOT_FOUND); } return createrepresentation(hardware); }

37 Custom Exceptions in JAX-RS public class HardwareNotFoundException extends NoLogWebApplicationException { } public HardwareNotFoundException(String hardwareid) { super(response.status(response.status.not_found).entity("hardware with id " + hardwareid + " does not exist").type(mediatype.text_plain_type).build()); }

38 UML JBoss 5. Conneg (content negotiation) JEE Java Spring EJB OOP Hibernate

39 Eigenschaften einer Repräsentation Format - JSON, XML, HTML, x-www-formurlencoded, plain text, JPEG, PNG, mp3, usw. Sprache/Locale - englisch, deutsch, usw. Charset Komprimierung [Version]

40 Content-* Headers Content-Type definiert das Format (Media Type) - application/json, application/xml, usw. auch das Charset - application/xml;charset=utf-8 Content-Language - Sprache/Locale - en, de, usw. Content-Encoding definiert Komprimierung - gzip, compress, deflate, identity.

41 Accept-* Headers Accept - welches Format wird erwartet (JSON, XML, usw.) Accept-Charset Accept-Encoding Accept-Language

42 Conneg Beispiel > GET /handyshop/products/1 HTTP/1.1 > User-Agent: curl/ > Host: localhost:8080 > Accept: application/json > Accept-Charset: UTF-8 > Accept-Language: de > Accept-Encoding: gzip, deflate > < HTTP/ OK < Server: Apache-Coyote/1.1 < Content-Type: application/json; charset=utf-8 < Content-Language: de < Date: Fri, 24 Sep :42:34 GMT < { "id":"1", "description":"max Flat M mit Nokia 6210", "tariff":"http://localhost:8080/handyshop/tariffs/tmob-maxflatm", "hardware":"http://localhost:8080/handyshop/hardware/nokia6210", "hardwareprice":1.00, "monthrate":30.00 }

43 Conneg "application/xml"}) public Response String UriInfo public Response String UriInfo public Response updateproduct( ProductRepresentation prdrpr) {...}

44 Conneg "application/xml"}) public Response String UriInfo uriinfo) { Product product = catalog.findproduct(id); if (product == null) { return Response.status(Response.Status.NOT_FOUND).type(MediaType.TEXT_PLAIN_TYPE).entity("Product " + id + " does not exist").build(); } ProductRepresentation repr = this.createrepresentation( product, uriinfo.getbaseuri()); return Response.ok(repr).build(); }

45 ProductRepresentation public class ProductRepresentation { private String id; private String description; private URI tariff; private String tariffid; private URI hardware; private String hardwareid; private BigDecimal hardwareprice; private BigDecimal monthrate;

46 Accept: text/html

47 JSON or not JSON JSON ist einfach - für interne Kommunikation und JavaScript Clients XML kann durch XSD fest definiert und später validiert werden. Gut für Kommunikation mit externen Systemen. x-www-form-urlencoded ist sehr einfach. Gut für POST Requests mit flachen Datenstrukturen. > POST /handyshop/products HTTP/1.1 >... description=max+flat+m+mit+nokia+6210 &tariffid=tmob-maxflatm&hardwareid=palmpre &hardwareprice=100&monthrate=50 >

48 UML JBoss 6. Caching JEE Java Spring EJB OOP Hibernate

49 Caching in HTTP Nur GET Abfragen Server definiert was ist cacheable Server oder Klient bestimmen, was gecachet werden soll, wann revalidiert werden soll Wichtige HTTP Header ist Cache-Control darf gecachet werden oder nicht (no-cache) wie lang ist gültig (max-age) Cache-Typ (public, private, no-store, no-transform) Wann soll revalidiert werden (must-revalidate)

50 Wo wird gecachet Auf der Klientseite Browser commons-httpclient (ab 4.1), xlightweb, JBoss RestEasy Client Framework Forward-Proxy (Squid, Apache Traffic Server) Auf der Serverseite Reverse-Proxy/HTTP Accelerator (Apache mod_cache, Varnish, nginx ncache, Squid, Apache Traffic Server)

51 Forward-Proxy vs. Reverse-Proxy

52 Caching "application/xml"}) public Response String UriInfo uriinfo) { Product product = catalog.findproduct(id); if (product == null) { return Response.status(Response.Status.NOT_FOUND).build(); } ProductRepresentation repr = this.createrepresentation( product, uriinfo.getbaseuri()); CacheControl cc = new CacheControl(); cc.setmaxage(600); //cc.setnocache(false); //cc.setprivate(false); return Response.ok(repr).cacheControl(cc).build(); }

53 Beispiel Response > GET /handyshop/products/1 HTTP/1.1 > User-Agent: curl/ > Host: localhost:8080 > Accept: application/json > < HTTP/ OK < Server: Apache-Coyote/1.1 < Cache-Control: public, no-transform, max-age=600 < Content-Type: application/json < Transfer-Encoding: chunked < Date: Mon, 27 Sep :38:17 GMT {...}

54 Advanced Caching Topics PUT, POST, DELETE führen zum Invalidieren GET mit Cache-Control: max-age=0 führt zum Invalidieren Gecacht werden Responses mit Statuscodes 200, 203, 206, 300, 301 oder 410 Alle anderen werden nicht gecachet, z.b. 500 :)

55 UML JBoss 7. Conditional Requests JEE Java Spring EJB OOP Hibernate

56 Für was sind sie gut Cache Revalidation Concurrency (optimistic locking)

57 Cache Revalidation > GET /handyshop/products/1 HTTP/1.1 > < HTTP/ OK < Server: Apache-Coyote/1.1 < Cache-Control: public, no-transform, max-age=600 < ETag: <... irgendwann nach 600 Sekunden > GET /handyshop/products/1 HTTP/1.1 > If-None-Match: > < HTTP/ Not Modified < Server: Apache-Coyote/1.1 < Cache-Control: public, no-transform, max-age=600 < Date: Mon, 27 Sep :08:21 GMT

58 Java Code 1 CacheControl cc = new CacheControl(); 2 cc.setmaxage(600); 3 EntityTag etag = new EntityTag( 4 String.valueOf(product.getModifiedAt().getTime())); 5 Response.ResponseBuilder builder = 6 request.evaluatepreconditions(etag); 7 if (builder!= null) { 8 return builder.cachecontrol(cc).build(); 9 } 10 ProductRepresentation repr = this.createrepresentation( 11 product, uriinfo.getbaseuri()); 12 return Response.ok(repr).tag(etag).cacheControl(cc).build(); 13

59 Concurrency > GET /handyshop/products/1 HTTP/1.1 > < HTTP/ OK < Server: Apache-Coyote/1.1 < Cache-Control: public, no-transform, max-age=600 < ETag: <... nachdem die Ressource geändert wurde > PUT /handyshop/products/1 HTTP/1.1 > If-Match: > Content-Type: application/json {...} < HTTP/ Precondition Failed < Server: Apache-Coyote/1.1 < Date: Mon, 27 Sep :08:21 GMT

60 public Response String Request request, ProductRepresentation prdrpr) { Product product = catalog.findproduct(id); if (product == null) { return Response.status( Response.Status.NOT_FOUND).build(); } EntityTag etag = new EntityTag( String.valueOf(product.getModifiedAt().getTime())); Response.ResponseBuilder builder = request.evaluatepreconditions(etag); if (builder!= null) { return builder.build(); } this.updateproductfromrepresentation(prdrpr); return Response.noContent().build(); }

61 UML JBoss 8. HATEOS JEE Java Spring EJB OOP Hibernate

62 Was ist das? Hypermedia As The Engine Of Application State Das wichtigste REST Prinzip (kein HATEOS - kein REST) RESTful API is driven by hypertext Jede Response beinhaltet Links zu weiteren Aktionen (Links zu weiteren Ressourcen) Diese Links sind abhängig von dem aktuellen Ressource/ Applikation Zustand Ein RESTful Klient kennt nur eine feste URL. Alle weiteren Aktionen werden im Form von Links in Responses geliefert

63 New Order > GET /handyshop/orders/123 HTTP/1.1 > < HTTP/ OK < ETag: { "id":"123", "validationstatus":"http://localhost:8080/handyshop/orders/123/validationstatus", "items":"http://localhost:8080/handyshop/orders/123/items", "submit":"http://localhost:8080/handyshop/orderqueue/123", "deliveryaddress":"http://localhost:8080/handyshop/orders/123/deliveryaddress", "receiptaddress":"http://localhost:8080/handyshop/orders/123/receiptaddress", "sum":200.99, "mwst":38.19, "state":"created" }

64 Submitted Order > GET /handyshop/orders/123 HTTP/1.1 > < HTTP/ OK < ETag: { "id":"456", "items":"http://localhost:8080/handyshop/orders/456/items", "deliveryaddress":"http://localhost:8080/handyshop/orders/456/deliveryaddress", "receiptaddress":"http://localhost:8080/handyshop/orders/456/receiptaddress", "sum":199.00, "mwst":37.81, "processingstatus":"http://localhost:8080/handyshop/orders/456/processingstatus," "state":"submitted" }

65 OrderResource#getOrder public Response UriInfo Request String orderid) { Order order = orderdao.findbyid(orderid); if (order == null) { throw new NoLogWebApplicationException(404); } EntityTag etag = new EntityTag( String.valueOf(order.getModifiedAt().getTime())); Response.ResponseBuilder builder = request.evaluatepreconditions(etag); if (builder!= null) { return builder.tag(etag).build(); } return Response.ok(createRepresentation(order, uriinfo)).tag(etag).build(); }

66 OrderResource#createRepresentation private OrderRepresentation createrepresentation( Order order, UriInfo uriinfo) { OrderRepresentation repr = new OrderRepresentation();... repr.setdeliveryaddress(uriinfo.getabsolutepathbuilder().path("deliveryaddress").build());... if (!order.issubmitted()) { repr.setvalidationstatus(uriinfo.getabsolutepathbuilder().path("validationstatus").build()); repr.setsubmit(uriinfo.getbaseuribuilder().path("orderqueue").path(order.getid()).build()); } else { repr.setprocessingstatus(uriinfo.getabsolutepathbuilder().path("processingstatus").build()); } return repr; }

67 Wichtig! REST APIs must be hypertext-driven, Roy T. Fielding Vorsichtig beim Umschreiben von Requests (z.b. durch Apache Rewrite-Rules). Lieber nichts umschreiben. Wenn aber doch, dann sollen relative URIs in Links verwendet werden.

68 UML JBoss 9. Transferring Metadata JEE Java Spring EJB OOP Hibernate

69 Custom HTTP Headers Request ID - X-RequestId Client ID - X-ClientId Authorisierungstoken - X-Authtoken > GET /handyshop/products/1 HTTP/1.1 > User-Agent: curl/ > Host: localhost:8080 > Accept: application/json > X-RequestId: > X-ClientId: POS-1

70 Header Tunneling Manche Proxies und Firewalls filtern unbekannte Headers raus Headers als Queryparameters übergeben Mit einem Filter zurück umwandeln > GET /handyshop/products/1?hdr-x-request-id= HTTP/1.1

71 UML JBoss 10. RESTful Clients JEE Java Spring EJB OOP Hibernate

72 Client Bibliotheken Apache commons-httpclient - ein alter guter Freund xlightweb - einfacher als commons-httpclient, hat ein paar zusätzlichen Features (z.b. Caching) JBoss RestEasy Client Framework Client Proxies Restlets bringt eigene Client Framework Apache Wink...

73 Es gibt zwei Typen von Klienten RPC JBoss RestEasy Client Proxy Gut für kleine Schnittstellen RESTful Apache commons-httpclient, xlightweb, JBoss RestEasy Client Framework flexibler, impliziert OO

74 RPC Klient mit public interface List<ProductRepresentation> void createproduct(productrepresentation @Produces("application/json") ProductRepresentation String productid);

75 Aufruf eines RPC Klienten HandyshopClient client = ProxyFactory.create( HandyshopClient.class, "http://localhost:8080/rest-service"); ProductRepresentation prdrepr = client.getproduct("1");

76 Pros und Cons von RPC Klienten Das Umgehen mit HATEOS ist problematisch Das Auswerten von Statuscodes ist problematisch Das Umgehen mit MediaTypes ist problematisch Zwei unterschiedliche Konzepte werden zusammengebracht: REST auf Server-Seite und RPC auf Klientseite. Schlecht. Passt schlecht in OO Code

77 RESTful Klient mit xlightweb UriBuilder uribuilder = UriBuilder.fromUri("http://localhost:8080/rest-service").path("Products").path("{productId}"); GetRequest request = new GetRequest( uribuilder.build("1").tostring()); request.setcontenttype(mediatype.application_json); IHttpResponse response = httpclient.call(request); if (response.getstatus() == 200) { ProductRepresentation prdrpr = objectmapper.readvalue( response.getbody().toinputstream(), ProductRepresentation.class); prdrpr.tostring(); }

78 Pros und Cons von RESTful Klienten Das Umgehen mit allen REST Aspekten ist natürlich und unproblematisch (z.b. HATEOS Links folgen) Impliziert OO Man muss anderes denken und programmieren. Problemchen.

79 UML JBoss 11. Architekturüberlegungen JEE Java Spring EJB OOP Hibernate

80 Nicht funktionale Aspekte Load Balancing ist sehr einfach, z.b. mit Apache Failover ist sehr einfach. Keine cluster-aware Stubs usw. Proxing, Requests umschreiben, weiterleiten, usw. Caching ist mit HTTP dabei Security (Firewalls, SSL, Basic/Form/Digest Authentication, JEE Security, usw.) Monitoren und Testen ist unproblematisch: Browser, curl, wget, usw..net kann HTTP, Java kann HTTP, Python kann HTTP, Perl kann HTTP, Cobol kann HTTP (?), usw.

81 Dokumentieren Versionieren Security Custom Media Types Out of Scope

82 UML JBoss Ende. Fragen? JEE Java Spring EJB OOP Hibernate

REST Grundlagen. Seminar Aktuelle Software-Engineering-Praktiken für das World Wide Web. Olga Liskin

REST Grundlagen. Seminar Aktuelle Software-Engineering-Praktiken für das World Wide Web. Olga Liskin <olga.liskin@gmail.com> REST Grundlagen Seminar Aktuelle Software-Engineering-Praktiken für das World Wide Web Olga Liskin Übersicht Motivation, Einführung Architekturstil REST RESTful Webservices Patterns,

Mehr

HTTP Hypertext Transfer Protocol

HTTP Hypertext Transfer Protocol Ein Vortrag aus der Reihe inf.misc 8. Juni 2005 50. Geburtstag von Tim Berners-Lee Inhalt 1 2 3 Content Negotiation Caching Authentifizierung 4 Definition RFC 2616, Abstract: The Hypertext Transfer Protocol

Mehr

VIP-LMS Anbindung. Uni Stgt. 27. Juni 2014. Version: 2.6

VIP-LMS Anbindung. Uni Stgt. 27. Juni 2014. Version: 2.6 Heiko Bernlöhr FreeIT.de VIP-LMS Anbindung Per Pascal Grube Uni Stgt. Thomas Richter Uni Stgt. 27. Juni 2014 David Boehringer Uni Stgt. Stephan Rudlof Uni Stgt. Version: 2.6 Zusammenfassung Maximale Integration

Mehr

1. Das World Wide Web 1.3 Das Hypertext Transfer Protocol. Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit

1. Das World Wide Web 1.3 Das Hypertext Transfer Protocol. Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit XML- und Webservice- Sicherheit 1. Das World Wide Web 1.3 Das Hypertext Transfer Protocol Gliederung Gliederung 1. HTTP 1.0 vs. 1.1 2. Verbindungen 3. HTTP-Methoden 4. Header 5. Ein Beispiel 6. Performance

Mehr

HTTP Squid Debugging-Hilfen Praxis. Der Webproxy Squid. Ein Überblick und ein wenig (viel) HTTP. Dirk Geschke. Linux User Group Erding

HTTP Squid Debugging-Hilfen Praxis. Der Webproxy Squid. Ein Überblick und ein wenig (viel) HTTP. Dirk Geschke. Linux User Group Erding Der Webproxy Ein Überblick und ein wenig (viel) HTTP Linux User Group Erding 28. April 2010 Gliederung HTTP 1 HTTP 2 3 4 HTTP Überblick HTTP Hypertext Transfer Protocol dient der Übertragung von Daten

Mehr

Mobilkommunikation. REST-basierte Dienste für verteilte, mobile Anwendungen. A. Gillert, A. Grebe, M. Hüffmeyer, C. Vogt

Mobilkommunikation. REST-basierte Dienste für verteilte, mobile Anwendungen. A. Gillert, A. Grebe, M. Hüffmeyer, C. Vogt Mobilkommunikation REST-basierte Dienste für verteilte, mobile Anwendungen A. Gillert, A. Grebe, M. Hüffmeyer, C. Vogt Fachhochschule Köln, Institut für Nachrichtentechnik Fachhochschule Köln Anton Gillert,

Mehr

Rechnernetze Übung 12

Rechnernetze Übung 12 Rechnernetze Übung 12 Frank Weinhold Professur VSR Fakultät für Informatik TU Chemnitz Juli 2011 Sie kennen sicherlich sogenannte Web-Mailer, also WWW-Oberflächen über die Sie Emails lesen und vielleicht

Mehr

HTTP Kommunikation (1)Request. HTTP - Überblick. HTTP Kommunikation (3) HTTP Kommunikation (2) Beispiel: Die folgende URL werde angefordert (Request)

HTTP Kommunikation (1)Request. HTTP - Überblick. HTTP Kommunikation (3) HTTP Kommunikation (2) Beispiel: Die folgende URL werde angefordert (Request) 15. Das Hypertext Transfer Protokoll 15-1 15. Das Hypertext Transfer Protokoll 15-2 HTTP - Überblick HTTP Kommunikation (1)Request 1. Requests und Responses 2. Content Negotiation 3. State Management (Cookies)

Mehr

Frank Kleine, Nico Steiner 1&1 Internet AG. Frontend-Performance mit PHP

Frank Kleine, Nico Steiner 1&1 Internet AG. Frontend-Performance mit PHP Frank Kleine, Nico Steiner 1&1 Internet AG Frontend-Performance mit PHP Vorstellung Frank Kleine Head of Web Infrastructure Nico Steiner Experte für Frontend T&A Frontend-Performance mit PHP 2 Vorstellung

Mehr

XML- und Webservice- Sicherheit

XML- und Webservice- Sicherheit XML- und Webservice- Sicherheit 1. Das World Wide Web 1.3 Das Hypertext Transfer Protocol Gliederung Gliederung 1. HTTP 1.0 vs. 1.1 2. Verbindungen Literatur: A. S. Tanenbaum, Computer Networks, 4th. Ed.,

Mehr

Bemerkung: Jede Ressource sollte über einen. Ressource A. Ressource. eindeutigen Namen verfügen. Ressource F. Ressource. Ressource E.

Bemerkung: Jede Ressource sollte über einen. Ressource A. Ressource. eindeutigen Namen verfügen. Ressource F. Ressource. Ressource E. 10 Hypertext Transfer Protocol 10.1 Hypermedia 10.2 Universal Resource Identifier 10.3 Nachrichten 10.4 Proxy 10.5 Cache 10.6 Authentifizierung 10.7 S Hypermedia: A D C B E F Bemerkung: Jede sollte über

Mehr

!"# $ % Internet Protokolle: HTTP 1/38

!# $ % Internet Protokolle: HTTP 1/38 !"# $ % Internet Protokolle: HTTP 1/38 1 Themenübersicht Schichtenmodell Gopher /FTP Statistik URL Einleitung Anwendungsablauf Beispiel mit Telnet Request, Response Anfragemethoden header Negotiation Proxyserver

Mehr

9RUOHVXQJDo 13.00-14.00 Uhr Hörsaal 2 EG 0006 3UDNWLNXP Do 14.00-16.00 Uhr PC-Labor U1075

9RUOHVXQJDo 13.00-14.00 Uhr Hörsaal 2 EG 0006 3UDNWLNXP Do 14.00-16.00 Uhr PC-Labor U1075 Praxis der Internet-Programmierung mit Java, Apache und XML (JAX) Institut für Informatik Martin.Guggisberg@unibas.ch KWWSMD[QDQRZRUOGRUJ -$9$ ;0/ $3$&+( Organisatorisches =HLWHQ" 9RUOHVXQJDo 13.00-14.00

Mehr

Theorie und Praxis einer JSON-RPC-basierten Web-API

Theorie und Praxis einer JSON-RPC-basierten Web-API Theorie und Praxis einer JSON-RPC-basierten Web-API Christian Krause Christian.Krause@raritan.com Raritan Deutschland GmbH Chemnitzer LinuxTage 2015 Gliederung 1 2 Remote Procedure Call Interface Definition

Mehr

Groovy und CouchDB. Ein traumhaftes Paar. Thomas Westphal

Groovy und CouchDB. Ein traumhaftes Paar. Thomas Westphal Groovy und CouchDB Ein traumhaftes Paar Thomas Westphal 18.04.2011 Herzlich Willkommen Thomas Westphal Software Engineer @ adesso AG Projekte, Beratung, Schulung www.adesso.de thomas.westphal@adesso.de

Mehr

Crashkurs http - CGI/Servlets(JSF) - Viewer

Crashkurs http - CGI/Servlets(JSF) - Viewer jkrueger(at)cebitec.uni-bielefeld.de http TCP Referenzmodell : ApplicationLayer zustandloses Protokoll textbasiert für Hypertext entwickelt ist es nicht darauf beschränkt Nachrichten : Request : Client

Mehr

y Hypertext braucht Ressourcen-Identifikation y Unterschied zwischen Link und Identifier

y Hypertext braucht Ressourcen-Identifikation y Unterschied zwischen Link und Identifier +\SHUWH[W7UDQVIHU3URWRFRO +773 (ULN:LOGH 7,.² (7+= ULFK 6RPPHUVHPHVWHU hehuvlfkw y Hypertext braucht Ressourcen-Identifikation y Unterschied zwischen Link und Identifier y Universal Resource Identifier

Mehr

10 Caching. 10.1 Expirationsmodell

10 Caching. 10.1 Expirationsmodell 127 GET is one of the most optimized pieces of distributed systems plumbing in the world. Don Box, Webservices-Guru und SOAP-Miterfinder Die Unterstützung von Caching und das conditional GET sind zentrale

Mehr

Themen. Anwendungsschicht DNS HTTP. Stefan Szalowski Rechnernetze Anwendungsschicht

Themen. Anwendungsschicht DNS HTTP. Stefan Szalowski Rechnernetze Anwendungsschicht Themen Anwendungsschicht DNS HTTP Anwendungsschicht OSI-Schicht 7, TCP/IP-Schicht 4 Dienste für den Nutzer/Anwender Unabhängig von den niederen Schichten Verschiedene Dienste bzw. Services DNS HTTP FTP,

Mehr

Security of Online Social Networks

Security of Online Social Networks Security of Online Social Networks Interfaces Lehrstuhl IT-Sicherheitsmanagment Universität Siegen May 3, 2012 Lehrstuhl IT-Sicherheitsmanagment 1/38 Recapitulation Graph Model formal data representation

Mehr

Einleitung SMTP Grundlagen HTTP 1.1 Session Management in HTTP HTTP HTTP 0.9

Einleitung SMTP Grundlagen HTTP 1.1 Session Management in HTTP HTTP HTTP 0.9 HTTP 0.9 Die Urversion des Hypertext Transport Protocols bietet ein einfaches Request-Response Modell aufbauend auf einer TCP Verbindung. Client baut eine TCP Verbindung auf, der Default für den Zielport

Mehr

Praktikum aus Softwareentwicklung 2. Web Services. Java Praktikum SS 2010 Gerald.Ehmayer@borland.com

Praktikum aus Softwareentwicklung 2. Web Services. Java Praktikum SS 2010 Gerald.Ehmayer@borland.com Web Services Java Praktikum SS 2010 Gerald.Ehmayer@borland.com 1 Web Services Einführung Definition, Eigenschaften, Anwendungen... JAX-RPC Überblick, Architektur... JAX Übersicht, Architektur Java Praktikum

Mehr

HTTP. Hypertext Transfer Protocol. 4. Februar 2004

HTTP. Hypertext Transfer Protocol. 4. Februar 2004 HTTP Hypertext Transfer Protocol Bernhard Möller bmoeller@techfak.uni-bielefeld.de René Tünnermann rtuenner@techfak.uni-bielefeld.de 4. Februar 2004 1 Einleitung Das Hypertext Transfer Protokoll wird bereits

Mehr

4. Servlets Ein kleiner Einstieg. Kurze Java Historie. Erinnerung: Internet Anwendungen. Konzept eines Seitenaufrufs

4. Servlets Ein kleiner Einstieg. Kurze Java Historie. Erinnerung: Internet Anwendungen. Konzept eines Seitenaufrufs 4. s Ein kleiner Einstieg Erinnerung: HTTP und HTML Idee von Web n und Containern Erstellung einfacher s (zunächst software technisch übelst unstrukturiert) Literatur: B. Basham, K. Sierra, B. Bates, Head

Mehr

Inhaltsverzeichnis. 2.1 Eine kurze Geschichte von REST... 9 2.2 Grundprinzipien... 11 2.3 Zusammenfassung... 17

Inhaltsverzeichnis. 2.1 Eine kurze Geschichte von REST... 9 2.2 Grundprinzipien... 11 2.3 Zusammenfassung... 17 xi 1 Einleitung 1 1.1 Warum REST?...................................... 1 1.1.1 Lose Kopplung................................ 2 1.1.2 Interoperabilität............................... 3 1.1.3 Wiederverwendung.............................

Mehr

Service-Orientierte Architekturen

Service-Orientierte Architekturen Hochschule Bonn-Rhein-Sieg Service-Orientierte Architekturen Kapitel 8: REST Vorlesung im Masterstudiengang Informatik Sommersemester 2010 Prof. Dr. Sascha Alda (sascha.alda@h-brs.de) (Vorläufiger) Aufbau

Mehr

Einstieg Projektziel Proxy Grundlagen Demonstration Ausblick. Reverse Proxys. Robert Hilbrich. Fakultät für Informatik Humboldt Universität Berlin

Einstieg Projektziel Proxy Grundlagen Demonstration Ausblick. Reverse Proxys. Robert Hilbrich. Fakultät für Informatik Humboldt Universität Berlin Reverse Proxys Robert Hilbrich Fakultät für Informatik Humboldt Universität Berlin 28. September 2006 John von Neumann, 1949 It would appear that we have reached the limits of what it is possible to achieve

Mehr

SOA mit.net: Vom Geschäftsprozess zur Lösung

SOA mit.net: Vom Geschäftsprozess zur Lösung SOA mit.net: Vom Geschäftsprozess zur Lösung Manfred Steyer Aktuelles Buch.Net 4.0 Update ISBN 978-3866454439 http://tinyurl.com/net4update 1 Kontakt [www] www.softwarearchitekt.at [mail] Manfred.Steyer@SoftwareArchitekt.at

Mehr

Protokolle. Konrad Rosenbaum, 2006/7 protected under the GNU GPL & FDL

Protokolle. Konrad Rosenbaum, 2006/7 protected under the GNU GPL & FDL TCP/IP: Standard Protokolle Konrad Rosenbaum, 2006/7 DNS - Domain Name System hierarchische, global verteilte Datenbank löst Namen in IP-Adressen auf Host hat einen primären Nameserver, der Fragen selbst

Mehr

Web 2.0 Architekturen und Frameworks

Web 2.0 Architekturen und Frameworks Web 2.0 Architekturen und Frameworks codecentric GmbH Mirko Novakovic codecentric GmbH Quality Technische Qualitätssicherung in Software-Projekten mit Fokus auf Performance, Verfügbarkeit und Wartbarkeit

Mehr

RESTful Web Services mit Java

RESTful Web Services mit Java RESTful Web Services mit Java Prinzipiell lassen sich REST-konforme Anwendungen schon seit langem mit dem Servlet API realisieren schließlich ist die Grundvoraussetzung nur die Unterstützung von Webstandards

Mehr

Kommunikationsnetze. 7. Das World Wide Web 7.2 Das Hypertext Transfer Protocol. Kommunikationsnetze 7. Das World Wide Web 7.3 HTTP

Kommunikationsnetze. 7. Das World Wide Web 7.2 Das Hypertext Transfer Protocol. Kommunikationsnetze 7. Das World Wide Web 7.3 HTTP Kommunikationsnetze 7.2 Das Hypertext Transfer Protocol Gliederung 1. HTTP 1.0 vs. 1.1 2. Verbindungen 3. HTTP-Methoden 4. Header 5. Ein Beispiel 6. Performance 7. SSL Literatur: A. S. Tanenbaum, Computer

Mehr

Web APIs (REST) Marko Harasic Freie Universität Berlin Institut für Informatik Netzbasierte Informationssysteme harasic@inf.fu-berlin.

Web APIs (REST) Marko Harasic Freie Universität Berlin Institut für Informatik Netzbasierte Informationssysteme harasic@inf.fu-berlin. Web APIs (REST) Marko Harasic Freie Universität Berlin Institut für Informatik Netzbasierte Informationssysteme harasic@inf.fu-berlin.de Motivation: The Web as a platform 2 Das Web intuitiv einfach und

Mehr

NoSQL Datenbanken am Beispiel von CouchDB

NoSQL Datenbanken am Beispiel von CouchDB NoSQL Datenbanken am Beispiel von CouchDB OIO - Hauskonferenz 2011 Version: 1.0 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Ihr Sprecher Thomas Bayer Programmierer

Mehr

Best Practices API s. Max Horváth, Steffen Irrgang, Andre Zayarni

Best Practices API s. Max Horváth, Steffen Irrgang, Andre Zayarni Best Practices API s Max Horváth, Steffen Irrgang, Andre Zayarni Agenda / Was ist zu beachten? Grundlagen / Vorüberlegungen Request und Response Format Authentifizierung und Security Performance API-Tests

Mehr

1 Einführung... 25. 2 Die Grundlagen... 55. 3 Praxis 1 das Kassenbuch (zentraler CouchDB-Server)... 139. 4 Praxis 2 das Kassenbuch als CouchApp...

1 Einführung... 25. 2 Die Grundlagen... 55. 3 Praxis 1 das Kassenbuch (zentraler CouchDB-Server)... 139. 4 Praxis 2 das Kassenbuch als CouchApp... Auf einen Blick 1 Einführung... 25 2 Die Grundlagen... 55 3 Praxis 1 das Kassenbuch (zentraler CouchDB-Server)... 139 4 Praxis 2 das Kassenbuch als CouchApp... 161 5 CouchDB-Administration... 199 6 Bestehende

Mehr

Anwendungsprotokolle: HTTP, POP, SMTP

Anwendungsprotokolle: HTTP, POP, SMTP Anwendungsprotokolle: HTTP, POP, SMTP TCP? UDP? Socket? eingesetzt, um Webseiten zu übertragen Zustandslos Nutzt TCP Client schickt Anfrage ( HTTP-Request ) an Server, Server schickt daraufhin Antwort

Mehr

M2M-Serviceplattformen für das Internet der Dinge

M2M-Serviceplattformen für das Internet der Dinge M2M-Serviceplattformen für das Internet der Dinge Klaus-Dieter Walter SSV Software Systems GmbH, Hannover kdw@ssv-embedded.de 20.11.2013 1 Agenda Wer ist SSV Software Systems? Hintergründiges zu IoT, M2M,

Mehr

Automatisierung und Integration von Request Tracker Systemen mittels REST-Schnittstelle. Stefan Hornburg. Perlworkshop 2008

Automatisierung und Integration von Request Tracker Systemen mittels REST-Schnittstelle. Stefan Hornburg. Perlworkshop 2008 Automatisierung und Integration von Request Tracker Systemen mittels REST-Schnittstelle Stefan Hornburg Perlworkshop 2008 split() Request Tracker REST-Schnittstelle Automatisierung Integration Kunden Deutschland:

Mehr

VMware vrealize Log Insight- Entwicklerhandbuch

VMware vrealize Log Insight- Entwicklerhandbuch VMware vrealize Log Insight- Entwicklerhandbuch vrealize Log Insight 2.5 Dieses Dokument unterstützt die aufgeführten Produktversionen sowie alle folgenden Versionen, bis das Dokument durch eine neue Auflage

Mehr

XML-RPC, SOAP und Web Services. Jörn Clausen joern@techfak.uni-bielefeld.de

XML-RPC, SOAP und Web Services. Jörn Clausen joern@techfak.uni-bielefeld.de XML-RPC, SOAP und Web Services Jörn Clausen joern@techfak.uni-bielefeld.de Übersicht Was ist RPC? Was hat XML mit RPC zu tun? Was sind XML-RPC und SOAP? Was sind Web Services? Wird das die Welt retten?

Mehr

FuE-Bereich IuK-Systeme im Gesundheitswesen

FuE-Bereich IuK-Systeme im Gesundheitswesen FuE-Bereich IuK-Systeme im Gesundheitswesen IG XML und Web Services Dipl.-Inform. Axel Schwolow IG Kommunikation im Web Entwicklung früher ausschließlich Kommunikation über Browser heute zunehmend direkt

Mehr

Projekt: Web-Proxy. Foliensatz 9: Projekt Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2015

Projekt: Web-Proxy. Foliensatz 9: Projekt Folie 1. Hans-Georg Eßer, TH Nürnberg Systemprogrammierung, Sommersemester 2015 Sep 19 14:20:18 amd64 sshd[20494]: Accepted rsa for esser from ::ffff:87.234.201.207 port 61557 Sep 19 14:27:41 amd64 syslog-ng[7653]: STATS: dropped 0 Sep 20 01:00:01 amd64 /usr/sbin/cron[29278]: (root)

Mehr

2.1 Eine kurze Geschichte von REST... 9 2.2 Grundprinzipien... 11 2.3 Zusammenfassung... 19

2.1 Eine kurze Geschichte von REST... 9 2.2 Grundprinzipien... 11 2.3 Zusammenfassung... 19 xiii 1 Einleitung 1 1.1 Warum REST?.......................................... 1 1.1.1 Lose Kopplung................................... 2 1.1.2 Interoperabilität.................................. 3 1.1.3

Mehr

Web Service Entwicklung mit Java. Sven Lindow

Web Service Entwicklung mit Java. Sven Lindow Web Service Entwicklung mit Java Sven Lindow 22.11.2006 Agenda Einleitung SOAP, REST, WSDL, UDDI Web Services mit Java JWSDP JAX-RPC, JAX-WS 2.0 AXIS, AXIS2 Web Services nutzen Google, Ebay Web Services

Mehr

GeoServer in action Fortgeschrittene Möglichkeiten beim Einsatz des Geoservers

GeoServer in action Fortgeschrittene Möglichkeiten beim Einsatz des Geoservers GeoServer in action Fortgeschrittene Möglichkeiten beim Einsatz des Geoservers Nils Bühner buehner@terrestris.de terrestris GmbH & Co KG Über uns Nils Bühner buehner@terrestris.de github.com/buehner Informatiker

Mehr

Sicherheit von Webapplikationen Sichere Web-Anwendungen

Sicherheit von Webapplikationen Sichere Web-Anwendungen Sicherheit von Webapplikationen Sichere Web-Anwendungen Daniel Szameitat Agenda 2 Web Technologien l HTTP(Hypertext Transfer Protocol): zustandsloses Protokoll über TCP auf Port 80 HTTPS Verschlüsselt

Mehr

[RESTful Webservices mit JAX-RS]

[RESTful Webservices mit JAX-RS] 2011 Felix Barnsteiner Aktuelle Technologien zur Entwicklung verteilter Java Anwendungen Betreut von Michael Theis Bearbeitet von [RESTful Webservices mit JAX-RS] Inhaltsverzeichnis 1. Einleitung... 1

Mehr

SAP NetWeaver Gateway. Connectivity@SNAP 2013

SAP NetWeaver Gateway. Connectivity@SNAP 2013 SAP NetWeaver Gateway Connectivity@SNAP 2013 Neue Wege im Unternehmen Neue Geräte und Usererfahrungen Technische Innovationen in Unternehmen Wachsende Gemeinschaft an Entwicklern Ausdehnung der Geschäftsdaten

Mehr

Leichtgewichtige Web 2.0-Architektur für komplexe Business-Anwendungen Nicolas Moser PRODYNA AG

Leichtgewichtige Web 2.0-Architektur für komplexe Business-Anwendungen Nicolas Moser PRODYNA AG 05.07.2012 Leichtgewichtige Web 2.0-Architektur für komplexe Business-Anwendungen Nicolas Moser PRODYNA AG Agenda 01 Einführung 02 Architektur 03 Lösungen 04 Zusammenfassung 2 2 Agenda 01 Einführung 02

Mehr

RESTful Web-Services mit JAX-RS

RESTful Web-Services mit JAX-RS JUG Stuttgart RESTful Web-Services mit JAX-RS 30. Oktober 2014 Alter Scheuer, Stuttgart-Degerloch Markus KARG (Expert Group JSR 339, 370 / JAX-RS 2.0, 2.1) Agenda Was ist nur so toll an diesem REST? JAX-RS

Mehr

3. Anwedungsprotokolle

3. Anwedungsprotokolle Überblick 3.1 Client/Server-Modell 3. Anwedungsprotokolle 3.2 Anforderung/Antwortprotokolle 3.3 Webkommunikation mit HTTP 3.4 E-mail Übertragung mit SMTP O. Kao Webbasierte Informationssysteme 3-1 3.1

Mehr

Schritt 4: Hallo Enterprise Bean

Schritt 4: Hallo Enterprise Bean Prof. Dr. Th. Letschert FB MNI JEE Schritt 4: Hallo Enterprise Bean Einstieg: EJBs erzeugen und nutzen Meine erstes EJB Projekt Enterprise Beans sind eine Backend Technologie, die mit unterschiedlichen

Mehr

Sicherheit mobiler Apps. Andreas Kurtz

Sicherheit mobiler Apps. Andreas Kurtz Sicherheit mobiler Apps Andreas Kurtz Agenda OWASP Mobile Security Project OWASP TOP 10 Mobile Risks Beispiele und Erfahrungen aus der Praxis Fokus auf Defizite bei Authentisierung/Autorisierung Zusammenfassung

Mehr

ZenQuery - Enterprise Backend as a Service Single Page Applications mit AngularJS und Spring MVC. - Björn Wilmsmann -

ZenQuery - Enterprise Backend as a Service Single Page Applications mit AngularJS und Spring MVC. - Björn Wilmsmann - ZenQuery - Enterprise Backend as a Service Single Page Applications mit AngularJS und Spring MVC - Björn Wilmsmann - ZenQuery Enterprise Backend as a Service Unternehmen horten Daten in Silos ZenQuery

Mehr

5. Übung zur Vorlesung Service-orientierte Architekturen

5. Übung zur Vorlesung Service-orientierte Architekturen 5. Übung zur Vorlesung Service-orientierte Architekturen Webservices und WSDL SoSe 2011 Anmerkung Hausaufgabe 03 BPMN Auch hier gilt: Layout! Zu Unterschieden zw. BPMN und eepk Relative Aussagen sind geschickter

Mehr

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java Präsentation zur Diplomarbeit von Übersicht Java 2 Enterprise Edition Java Servlets JavaServer Pages Enterprise JavaBeans Framework

Mehr

ORACLE Application Express (APEX) und Workflows. Copyright 2014. Apps Associates LLC. 1

ORACLE Application Express (APEX) und Workflows. Copyright 2014. Apps Associates LLC. 1 ORACLE Application Express (APEX) und Workflows Copyright 2014. Apps Associates LLC. 1 Apps Associates Weltweit tätiger Dienstleister für Geschäfts- und Technologieberatung 2002 Gründung der Apps Associates

Mehr

Vergleich von SOAP, XML-RPC und REST

Vergleich von SOAP, XML-RPC und REST Vergleich von SOAP, XML-RPC und REST Thomas Bayer bayer@oio.de Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim http://www.oio.de 1 Entstehung SOAP, XML-RPC, REST XML Nachrichten Dave Winer

Mehr

Peter Sobe Internettechnologien. HTTP Protokoll (1) Hypertext Transport Protocol, größtenteils zum Austausch von Hypertext (HTML, xhtml) benutzt

Peter Sobe Internettechnologien. HTTP Protokoll (1) Hypertext Transport Protocol, größtenteils zum Austausch von Hypertext (HTML, xhtml) benutzt WWW Web basierend auf dem Internet Das Internet war bereits eher als das Web vorhanden, mit verteilten Anwendungen, Dateitransfer, Netzwerk- Dateisystemen (NFS) Web: entstanden durch Vorhandensein des

Mehr

Architektur von SOAP basierten Web Services

Architektur von SOAP basierten Web Services Architektur von SOAP basierten Web Services André Homeyer 28.11.2005 Worst-Case einer verteilten Anwendung TravelTime Client Benutzerinterface WackyWing Server Flüge suchen TravelTime Server Flüge suchen

Mehr

Websockets: Leichtgewichtige Verbindungen für Web-Applikationen

Websockets: Leichtgewichtige Verbindungen für Web-Applikationen Websockets: Leichtgewichtige Verbindungen für Web-Applikationen Seite: 1 / 16 Über mich Stefan Neufeind Mit-Geschäftsführer der SpeedPartner GmbH aus Neuss ein Internet-Service-Provider (ISP) Individuelle

Mehr

Softwareentwicklung mit Enterprise JAVA Beans

Softwareentwicklung mit Enterprise JAVA Beans Softwareentwicklung mit Enterprise JAVA Beans Java Enterprise Edition - Überblick Was ist J2EE Java EE? Zunächst mal: Eine Menge von Spezifikationen und Regeln. April 1997: SUN initiiert die Entwicklung

Mehr

Webserver Performance Tuning

Webserver Performance Tuning Webserver Performance Tuning Jan Kneschke jan.kneschke@incremental.de incremental Intro Manche Webangebote werden erfolgreicher als ihre Schöpfer je eingeplant haben. Der Apache gibt sich die Kugel, das

Mehr

Bernhard Kau @2ndkauboy http://kau-boys.de #wpcb13

Bernhard Kau @2ndkauboy http://kau-boys.de #wpcb13 Bernhard Kau @2ndkauboy http://kau-boys.de #wpcb13 1 Übersicht der PageSpeed Produkte Installation von Mod_Pagespeed Übersicht der verfügbaren Filter Vorstellung einiger wichtiger Filter Ersetzung von

Mehr

Bulk Web-Crawler mit Spring Batch

Bulk Web-Crawler mit Spring Batch Bulk Web-Crawler mit Spring Batch Anforderung - funktional Wir wollen automatisiert Überprüfung, ob bestimmte Produkte (Bücher) in einem Online-Shop gelistet sind. Site Produkt Status AMAZON_DE 0815 FOUND

Mehr

Internet Protokolle für Multimedia - Anwendungen

Internet Protokolle für Multimedia - Anwendungen Internet Protokolle für Multimedia - Anwendungen Kapitel 5.7 Streaming im Web (RTSP) 1 Streaming Media (1) Streaming Media Strom ist kontinuierlich wird unmittelbar während des Empfangs wiedergegeben wird

Mehr

Erfahrungen und Erkenntnisse. Klaus Richarz, HBT GmbH

Erfahrungen und Erkenntnisse. Klaus Richarz, HBT GmbH Erfahrungen und Erkenntnisse Klaus Richarz, HBT GmbH Java Enterprise Edition 5.0 JBoss Seam Konsequenzen für Realisierung Qualitätssicherung Build & Deployment Fazit & Empfehlungen JBoss Seam in Projekten,

Mehr

Apache Module Funktion, Konfiguration und Programmierung. Abruf einer Webseite, Request/ Response Cyle

Apache Module Funktion, Konfiguration und Programmierung. Abruf einer Webseite, Request/ Response Cyle Apache Module Funktion, Konfiguration und Programmierung Abruf einer Webseite, Request/ Response Cyle Einbindung von Modulen in Apache Einsatz von Standardmodulen Programmierung von Modulen Request/ Response

Mehr

Grundlagen des Grid Computing

Grundlagen des Grid Computing Grundlagen des Grid Computing Webservices und Grid Computing Globus Toolkit 4 - Grundlagen ICA Joh.. Kepler Universität t Linz Eine Typische Grid-Applikation (Beispiel) VO Management Service Resource Discovery

Mehr

Web-Anwendungsentwicklung mit dem Delivery Server

Web-Anwendungsentwicklung mit dem Delivery Server Web-Anwendungsentwicklung mit dem Delivery Server Java-Framework auf Basis der Open API Bernfried Howe, Webertise Consulting GmbH WEBertise Consulting Dipl. Informatiker (Wirtschaftsinformatik) 2001-2010

Mehr

Apache Module (C API)

Apache Module (C API) Uni Köln - HKI HS: Verteilte Systeme Dozent: Prof. Manfred Thaller Referent: Dennis Heinz Apache Module (C API) Das HTTP Protokoll Beispiel einer einfachen Anfrage: GET /irgend/ein/dokument.html HTTP/1.1

Mehr

Entwicklung von Web-Anwendungen auf JAVA EE Basis

Entwicklung von Web-Anwendungen auf JAVA EE Basis Entwicklung von Web-Anwendungen auf JAVA EE Basis Java Enterprise Edition - Überblick Prof. Dr. Bernhard Schiefer Inhalt der Veranstaltung Überblick Java EE JDBC, JPA, JNDI Servlets, Java Server Pages

Mehr

Um asynchrone Aufrufe zwischen Browser und Web Anwendung zu ermöglichen, die Ajax Hilfsmittel DWR ist gebraucht.

Um asynchrone Aufrufe zwischen Browser und Web Anwendung zu ermöglichen, die Ajax Hilfsmittel DWR ist gebraucht. Technisches Design Inhalt Design Übersicht Menü und DispatcherServlet DWR Servlet Viewer Servlets Controllers Managers Sicherheit Anwendung Architektur Component Diagram Deployment Diagram Komponente Sequence

Mehr

Mehrsprachige Web-Sites mit Apache

Mehrsprachige Web-Sites mit Apache Mehrsprachige Web-Sites mit Apache Content Negotiation statt Länderflaggen Stefan Kuhlins Lehrstuhl für Wirtschaftsinformatik III Universität Mannheim 68131 Mannheim http://www.kuhlins.de/ Zusammenfassung

Mehr

Seitenkanalangriffe im Web

Seitenkanalangriffe im Web Seitenkanalangriffe im Web Sebastian Schinzel Friedrich-Alexander Universität Erlangen-Nürnberg Lehrstuhl für Informatik 1 IT-Sicherheitsinfrastrukturen Supported by Deutsche Forschungsgemeinschaft (DFG)

Mehr

Webservices REST vs. SOAP

Webservices REST vs. SOAP Webservices REST vs. SOAP Amine El Ayadi INF-M2 Anwendungen 1 (SS 2008) Department Informatik HAW Hamburg 17. Juni 2008 1/41 Agenda Einführung & Motivation Webservices SOAP Webservices REST Webservices

Mehr

Sicherheit mobiler Apps OWASP 17.11.2011. The OWASP Foundation http://www.owasp.org. Andreas Kurtz

Sicherheit mobiler Apps OWASP 17.11.2011. The OWASP Foundation http://www.owasp.org. Andreas Kurtz Sicherheit mobiler Apps Andreas Kurtz 17.11.2011 NESO Security Labs GmbH Universität Erlangen-Nürnberg mail@andreas-kurtz.de Copyright The Foundation Permission is granted to copy, distribute and/or modify

Mehr

Sicherung von Web Services durch Firewalls

Sicherung von Web Services durch Firewalls Sicherung von Web Services durch Firewalls Mario Jeckle, Barbara Zengler DaimlerChrysler Forschungszentrum Ulm {mario.jeckle, barbara.zengler}@daimlerchrysler.com www.jeckle.de Gliederung Kommunikation

Mehr

Integration von Oracle Forms in Service Oriented Architecture (SOA) Jürgen Menge Oracle Deutschland

Integration von Oracle Forms in Service Oriented Architecture (SOA) Jürgen Menge Oracle Deutschland Integration von Oracle Forms in Service Oriented Architecture (SOA) Jürgen Menge Oracle Deutschland The following is intended to outline our general product direction. It is intended for information purposes

Mehr

Bestimmen Sie anhand des SOA-record der Zone fh-koeln.de, wann die Informationen der Zone fh-koeln.de vermutlich zuletzt geändert wurden.

Bestimmen Sie anhand des SOA-record der Zone fh-koeln.de, wann die Informationen der Zone fh-koeln.de vermutlich zuletzt geändert wurden. Aufgabe 2-14 Bestimmen Sie anhand des SOA-record der Zone fh-koelnde den Primary Nameserver, die Serien-Nr der Daten, den TTL- Wert und die E-Mail-Adresse des Zonenverwalters > nslookup -type=soa fh-koelnde

Mehr

SEQIS 10 things API Testing

SEQIS 10 things API Testing SEQIS 10 things API Testing SEQIS 10 things API Testing Herzlich Willkommen! Reinhard Salomon SEQIS Geschäftsleitung SEQIS 10 things Programm 2014 20.03.14 Business Analyse Einführung in den BABOK Guide

Mehr

Java Forum Stuttgart 2008

Java Forum Stuttgart 2008 Professionelle Open Source SOA in 45 Minuten! Java Forum Stuttgart 2008 Dr. Halil-Cem Gürsoy, CDI AG Der Referent Insgesamt ca. 10 Jahre Beratung, davor Forschung Senior Consultant - JEE Evangelist Hauptsächlich

Mehr

Grundlagen Internet-Technologien INF3171

Grundlagen Internet-Technologien INF3171 Fachbereich Informatik Informationsdienste Grundlagen Internet-Technologien INF3171 Das Web, das unbekannte Wesen Internet, Web, HTTP, CGI Version 1.01 13.04.2015 Aktuelles 2 das Web Internet seit ~ 1969

Mehr

Das WWW im Schweinsgalopp

Das WWW im Schweinsgalopp Das WWW im Schweinsgalopp Woher: T. Berners-Lee The actual observed working structure of the organisation is a multiply connected "web" whose interconnections evolve with time. In this environment, a new

Mehr

Hypertext Transfer Protocol

Hypertext Transfer Protocol Rheinisch-Westfälische Technische Hochschule Aachen Lehrstuhl für Informatik IV Prof. Dr. rer. nat. Otto Spaniol Hypertext Transfer Protocol Seminar: Internetprotokolle für die Multimediakommunikation

Mehr

Zabbix 2.4. What's new? What's new in Zabbix 2.4. 1 of

Zabbix 2.4. What's new? What's new in Zabbix 2.4. 1 of Zabbix 2.4 What's new? 1 of What's new in Zabbix 2.4 About me Name: Pascal Schmiel Email: Schmiel@dv-loesungen.de WEB: www.dv-loesungen.de Senior Consultant Zabbix Certified Professional 2 of What's new

Mehr

Modul 1.4.3. Grundlagen der Internettechnologien. von Günter Schoppe. Hannover, 2002. guenter.schoppe@ers-hameln.de

Modul 1.4.3. Grundlagen der Internettechnologien. von Günter Schoppe. Hannover, 2002. guenter.schoppe@ers-hameln.de Modul 1.4.3 Grundlagen der Internettechnologien von Günter Schoppe Hannover, 2002 guenter.schoppe@ers-hameln.de 1.4.3 Grundlagen der Internet-Technologien 1.4.3.1 Historie 1.4.3.2 Internetprotokolle 1.4.3.3

Mehr

Website Performance Optimierung

Website Performance Optimierung Website Performance Optimierung Fokus: Frontendoptimierung form4 GmbH & Co. KG Jan-Henrik Hempel Telefon: 030.278784-13 E-Mail: jan-henrik.hempel@form4.de Website Performance Optimierung Überblick 1 Relevanz

Mehr

Newsletter2Go - API Dokumentation

Newsletter2Go - API Dokumentation Newsletter2Go - API Dokumentation Changelog: (version 1.2 version 1.3) - Funktion "Attribut setzen" hinzugefügt - Funktion "Newsletter abrufen" hinzugefügt - Funktion "Webversion-Link abrufen" hinzugefügt

Mehr

Programmierung von Client/Server- Anwendungen

Programmierung von Client/Server- Anwendungen Programmierung von Client/Server- Anwendungen Komponenten des Web-Containers (Java EE) SoSe2015 Prof. Dr. Andreas Schmietendorf 1 Übersicht zur Vorlesung Entwicklung der Java Enterprise Edition Servlets,

Mehr

Websockets mit Mojolicious

Websockets mit Mojolicious Renée Bäcker Websockets mit Mojolicious Websockets sind ein Hypethema im Bereich Webanwendungen. Mit Websockets können "Echtzeitanwendungen" umgesetzt werden. Ein typisches Beispiel ist der Chat. Wir wollen

Mehr

Clustering von Application Servern am Beispiel von JBoss 3.2

Clustering von Application Servern am Beispiel von JBoss 3.2 Clustering von Application Servern am Beispiel von JBoss 3.2 Cluster Workshop iternum GmbH Alexanderstraße 7 60489 Frankfurt/Main www.iternum.com Agenda Clustertechnik allgemein Was ist Clustering? Gründe

Mehr

Objekt-relationales Mapping und Performance-Tuning

Objekt-relationales Mapping und Performance-Tuning Objekt-relationales Mapping und Performance-Tuning Thomas Krüger tkrueger@vanatec.com Agenda Wege um Daten zu lesen Wege um Daten zu modellieren Wege um Datenbanken effizient zu nutzen 2 2 Wege, Daten

Mehr

Das eigene Kandidatenfrontend

Das eigene Kandidatenfrontend Das eigene Kandidatenfrontend THEMA: Mit dem BeeSite API zum eigenen Job Board Dr. Sascha Juchem R&D Abteilung sascha.juchem@milchundzucker.de AGENDA Mit dem BeeSite API zum eigenen Job Board 01 Einleitung

Mehr

Web-Services Implementierung mit Java

Web-Services Implementierung mit Java Web-Services Implementierung mit Java J. Heinzelreiter WS 2004/05 Java-APIs für Web-Services (1) Anwendungs-Code JAXR JAXM JAX-RPC SAAJ SOAP/SwA JWSDL WSDL XML/XML-Schema Web-Services/Java - 2 Java-APIs

Mehr

7. Cloud-Technologien

7. Cloud-Technologien 7. Cloud-Technologien Inhalt: Begriffe SOA, SOC, Grid, Cloud Verschiedene Arten von Cloud-Computing Beispiele für Cloud-Computing-Infrastrukturen Ausgewählte technische Details Peter Sobe 1 Distributed

Mehr

Inhalt: Konfiguration: web.xml ; server.xml Workflow: Weiterleitung von Requests Lektion II-IV Lektion V-VI

Inhalt: Konfiguration: web.xml ; server.xml Workflow: Weiterleitung von Requests Lektion II-IV Lektion V-VI Servlet II Inhalt: Konfiguration: web.xml ; server.xml Workflow: Weiterleitung von Requests Lektion II-IV Lektion V-VI 3-1 1. Grundlagen 2. Servlets 3. JSP 4 1.1. JAR Files 4 1.2. TCP/IP, Sockels 4 1.3.

Mehr

ISA Server 2004 HTTP Filter - Von Marc Grote

ISA Server 2004 HTTP Filter - Von Marc Grote Seite 1 von 11 ISA Server 2004 HTTP Filter - Von Marc Grote Die Informationen in diesem Artikel beziehen sich auf: Microsoft ISA Server 2004 Einleitung In diesem Artikel erläutere ich die Konfiguration

Mehr

Deltacloud. Stefan Düsing. Hochschule Mannheim Fakultät für Informatik Paul-Wittsack-Straße 10 68163 Mannheim stefanduesing@googlemail.

Deltacloud. Stefan Düsing. Hochschule Mannheim Fakultät für Informatik Paul-Wittsack-Straße 10 68163 Mannheim stefanduesing@googlemail. Deltacloud Stefan Düsing Hochschule Mannheim Fakultät für Informatik Paul-Wittsack-Straße 10 68163 Mannheim stefanduesing@googlemail.com Zusammenfassung Heutzutage gibt es viele verschiedene Anbieter von

Mehr