JAX-WS

A Wikipédiából, a szabad enciklopédiából

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[szerkesztés]

A példák az Oracle oktatóanyagainak példái alapján készültek.[1]

Szerver[szerkesztés]

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[szerkesztés]

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[szerkesztés]

Jegyzetek[szerkesztés]

Források[szerkesztés]