JAX-WS
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.[1]
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[0]; } 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
- ↑ http://docs.oracle.com/javaee/5/tutorial/doc/bnayn.html
Források
- JSR 224
- A hivatalos Oracle tutorial
- JAX-WS 2.0 Javadoc[halott link]
- Informatikai portál • összefoglaló, színes tartalomajánló lap