A JAX-WS: Java API for XML Web Services a Java programozási nyelv API-ja a Java alapú SOAP protokollt használó webszolgáltatások létrehozására. A Java EE 6 szabványcsaládban lévő JSR 224-es szabvány része. Támogatja a Java SE 5-ben bevezetett annotációk használatát, így leegyszerűsíti a fejlesztés folyamatát. A referencia implementáció a GlassFish alkalmazásszerverhez tartozik, és most a Metro implementáció része. A JAX-WS alapvetően két részből áll. Ezek közül az egyik a szerver oldali kód, amely több osztályt tartalmazhat, és ezeket tudjuk majd használni. A leírónyelve a webszolgáltatás-leíró nyelv. A másik rész a kliens oldali kód, amely a szerver oldali osztályok egy olyan formáját tartalmazza, amelyek meghívják a szolgáltatás megfelelő metódusát, és visszaadják annak a visszatérési értékét. A fejlesztés során a szerver oldali kódot kell nekünk megírni, majd a fejlesztőkörnyezet segítségével kell a klienst elkészíteni.

Példa A példák az Oracle oktatóanyagainak példái alapján készültek.http://docs.oracle.com/javaee/5/tutorial/doc/bnayn.html Szerver A szerver oldali példa egy egyszerű osztály, amelynek a sayHello metódusa visszaadja a paraméterben megadott név alapján a "Hello, név." String típusú szöveget. package helloservice.endpoint;

import javax.jws.WebService;

@WebService() // ezzel az annotációval definiáljuk a webszolgáltatást public class Hello { private String message = new String("Hello, ");

public Hello() {}

@WebMethod() // ezzel az annotációval definiáljuk a webszolgáltatás egy távolról hívható metódusát. public String sayHello(String name) { return message + name + ".";

Kliens package simpleclient;

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

public class HelloClient { // megadjuk a webszolgáltatást leíró állománynak a helyét @WebServiceRef(wsdlLocation="http://localhost:8080/helloservice/hello?wsdl") static HelloService service;

public static void main(String[] args) { try { HelloClient client = new HelloClient(); //létrehozunk egy új objektumot a kliensből client.doTest(args); // lefuttatjuk a tesztet } catch(Exception e) { e.printStackTrace();

public void doTest(String[] args) { try { System.out.println("Retrieving the port from the following service: " + service); Hello port = service.getHelloPort(); // elkérjük a webszolgáltatás által kibocsátott osztály kliens oldali megfelelőjét System.out.println("Invoking the sayHello operation on the port.");

String name; if (args.length > 0) { name = args; } else { name = "No Name";

// meghívjuk az osztály metódusát, amely hatására a távoli metódus lefut, és visszaadja az eredményt String response = port.sayHello(name); System.out.println(response); // a visszakapott választ kiírjuk a konzolra } catch(Exception e) { e.printStackTrace();

Implementációk Apache Axis2 az Apache Software Foundation fejlesztése. Metro a Sun Microsystems (már Oracle) által kifejlesztett webszolgáltatás. JBoss WS a JBoss által készített implementáció.

Jegyzetek

Források JSR 224 A hivatalos Oracle tutorial JAX-WS 2.0 Javadoc

Kategória:Webszolgáltatások Kategória:Java XML API-k