Temat: web service przykład


Temat: web service przykład
Data: 2013-01-29
Treść:
Oto prosty utworzenia web service'u:
1. Tworzymy nowy projekt java w eclipse
2. Tworzymy nowy pakiet eu.wojciechowsy.ws
3. W pakiecie z pkt 2 tworzymy interfejs:
package eu.wojciechowscy.ws;

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;

//Service Endpoint Interface
@WebService
@SOAPBinding(style = Style.RPC)
public interface HelloWorld{

@WebMethod String getHelloWorldAsString(String name);

}
4. Tworzymy klase:
package eu.wojciechowscy.ws;

import javax.jws.WebService;

@WebService(endpointInterface = "eu.wojciechowscy.ws.HelloWorld")
public class HelloWorldImpl implements HelloWorld{

@Override
public String getHelloWorldAsString(String name) {
return "Hello World JAX-WS " + name;
}

}
5. Mamy juz utworzony interfejs oraz klase go implementujaca. Utworzmy teraz klase, ktora opublikuje nam ten web service
package eu.wojciechowscy.endpoint;

import javax.xml.ws.Endpoint;

import eu.wojciechowscy.ws.HelloWorldImpl;

public class HelloWorldPublisher {

public static void main(String[] args) {
Endpoint.publish("http://localhost:9999/ws/hello", new HelloWorldImpl());
}
}
6. Jesli wszystko przebieglo pomysleni pod adresem:
http://localhost:9999/ws/hello?wsdl
dostepny bedzie wsdl utworzonego web serwisu. Fajnie jest na tym etapie przetestowac czy działa on poprawnie. Można to zrobić za pomocą popularnego programu soapUI, gdzie tworząc nowy projekt należy tylko wskazać ades wsdl. Następnie można już testować requesty.
7. Klienta tego web servisu można również utworzyć z palca:
package eu.wojciechowscy.ws.client;

import java.net.MalformedURLException;
import java.net.URL;

import javax.xml.namespace.QName;
import javax.xml.ws.Service;

import eu.wojciechowscy.ws.HelloWorld;

public class Main {

public static void main(String[] args) {

URL url=null;
try
{
url = new URL("http://localhost:9999/ws/hello?wsdl");
}
catch (MalformedURLException e)
{
e.printStackTrace();
}

//do pobrania z definicji wsdl
QName qname = new QName("http://ws.wojciechowscy.eu/", "HelloWorldImplService");

Service service = Service.create(url, qname);

HelloWorld hello = service.getPort(HelloWorld.class);

System.out.println(hello.getHelloWorldAsString("slawek"));

}

}
8. Alternatywnie zamiast pisać klienta ręcznie można skorzystać z narzędzia dostarczanego razem z jdk, które samo utworzy klasy:
wsimport -keep http://localhost:9999/ws/hello?wsdl
<< Powrót <<

powered by sw