Java Web Services and Glassfish Metro 2009

Preview:

DESCRIPTION

Java Web Service Technologies and Glassfish Metro @2009

Citation preview

Java Web Services

Using Java in Service-Oriented Architectures

By Oğuzhan ACARGİL

1http://0guzhan.blogspot.com

Developing Web Services at a Glance

Core Web Services: JAX-WS, JAXB Enhanced Web Services: WSIT Secure Web Services: XWS-Security Legacy Web Services: JAX-RPC

2http://0guzhan.blogspot.com

Java api for XML Web Services (JAX-WS) Between web services and clients with

using XML Message oriented and RPC oriented web

services Soap Messages (XML) over HTTP Java EE api hiding complexitiy from the

application developer

3http://0guzhan.blogspot.com

4http://0guzhan.blogspot.com

JAX-WS...

Developing web services on server side with using java apiDefine methods in an interface Implement those methodsAdd required annotations to classes and web

service methods (@WebService & @WebMethod)

5http://0guzhan.blogspot.com

JAX-WS Implementation

package helloservice.endpoint;

import javax.jws.WebService;

@WebServicepublic class Hello {

private String message = new String("Hello, ");

public void Hello() {}

@WebMethodpublic String sayHello(String name) {

return message + name + ".";}

}

6http://0guzhan.blogspot.com

JAX-WS... Developing web services on client side

with using java apiCreate an object representing the serviceThen simply, invoke web service methods

7http://0guzhan.blogspot.com

import javax.xml.ws.WebServiceRef;import helloservice.endpoint.HelloService;import helloservice.endpoint.Hello;

public class HelloClient {

@WebServiceRef(wsdlLocation="http://localhost:8080/helloservice/hello?wsdl")static HelloService service;

public void doTest(String pName) {try {

System.out.println("Retrieving the port from the following service: " + service);Hello port = service.getHelloPort();System.out.println("Invoking the sayHello operation on the port.");String name;

String response = port.sayHello(name);System.out.println(response);

} catch(Exception e) e.printStackTrace();

}

public static void main(String[] args) {HelloClient client = new HelloClient();client.doTest(“Misal...!”);

}}

8http://0guzhan.blogspot.com

Advantages of JAX-WS1. Generating and parsing XML problem

solved2. Converting API calls and responses from

& to SOAP messages3. Platform independence of JAVA4. Non-restrictive to platforms5. Flexibility6. Supporting WS-I(Web Services

Interoperability) Basic Profile Version 1.1

9http://0guzhan.blogspot.com

Java API for XML Binding(JAXB) Binding between XML schema and Java

representations Incorporate XML data and process functions in

Java applications Unmarshalling(reading) XML instance

documents to Java content trees Marshalling(writing) Java content trees back into

XML instance documents Generating XML schema from Java objects

10http://0guzhan.blogspot.com

Prerequisite for JAXB Unmarshalling

Converting XML data into JAXB-derived Java objects

Marshalling

Converting a JAXB-derived Java objects tree to XMLdata

Validation

Checking XML documents content meets the constraints of schema

11http://0guzhan.blogspot.com

JAXB Architecture Overview

12http://0guzhan.blogspot.com

Schema compiler: Binds a source schema to a set of schema-derived program elements.

Schema generator:Maps a set of existing program elements to a derived schema.

Binding runtime framework: Provides unmarshalling (reading) and marshalling (writing) operations for accessing, manipulating, and validating XML content using either schema-derived or existing program elements.

13http://0guzhan.blogspot.com

JAXB Binding Process1. Generate Classes: read schema and create

JAXB mapped classes2. Compile Classes: Create objects of all recently

created JAXB mapped classes3. Unmarshal: Read document to JAXB objects4. Generate content tree5. Validation is optional since data cannot be

meets the constraints of first schema6. Process content7. Marshal: Write to document

14http://0guzhan.blogspot.com

• Steps in the JAXB binding process visualization

15http://0guzhan.blogspot.com

SOAP Attachments API for JAVA (SAAJ)

Behind the JAX-WS handlers Directly creating and populating a SOAP

messages Directly sending request-response

messages Conforms to SOAP 1.1 and 1.2

specifications and the SOAP with attachments specification.

16http://0guzhan.blogspot.com

Approach of SAAJ, Shortly

1. Connection created

2. Invoke method with sending SOAP envelope

3. Retrieve response

17http://0guzhan.blogspot.com

XWS-Security

An implementation the Web Services Security (WSS) specification developed by OASIS

WSS accomadate a wide variety of models and encryption technologies

Message level security Secure JAX-RPC & stand-alone SAAJ applications with

Signing some parts Encrypting some parts Sending username-password authentication info Or some combination of these...

18http://0guzhan.blogspot.com

WSIT: Tango Project Providing interoperability with Windows

Communication Foundation(WCF), the Web services stack bundled with the .NET 3.0 platform.

Project Tango(WSIT) implements for Security Reliability Transactions

Using the protocols and mechanisms of WS-* specifications.

19http://0guzhan.blogspot.com

20http://0guzhan.blogspot.com

METRO

High-performance, Extensible, Easy-to-use web service stack. One-stop shop for all your web service needs,

from the simplest hello world web service to reliable, secured, and transacted web service that involves .NET services.

21http://0guzhan.blogspot.com

22http://0guzhan.blogspot.com

•HTTP transport •MTOM and XOP •SOAP/TCP

23http://0guzhan.blogspot.com

•Reliability recover from failures caused by messages transmission.•Recovery is handled by the underlying system without consumer or provider application code.

24http://0guzhan.blogspot.com

Metro enables transactional support for web services.

25http://0guzhan.blogspot.com

implements the WS-Security specification

26http://0guzhan.blogspot.com

J2EE Web Services vs .Net Web Services

The performance of core SOAP-based web services is significant

WSTest was used to compare the performance of the J2EE and Windows .NET platforms when performing basic web services.

In the basic web services call, echoVoid, and the most complex one, echoSynthetic, JAX-RPC performs nearly 3 times better than .NET. In the other cases, J2EE technology performs nearly twice as well as .NET.

Conclusion: J2EE platform is completely portable, developers can expect to see this top-of-the-line performance on the Linux and Solaris platforms as well.

27http://0guzhan.blogspot.com

28http://0guzhan.blogspot.com

Recommended