poniedziałek, 20 października 2008

WebService bez servera? Tak!

Do niedawna żyłem w błędzie i niewiedzy i twierdziłem że do wystawienia WebService potrzebny jest Server aplikacyjny (Tomcat, JBoss, … ) okazuje się, że jest to nieprawda. Możemy udostępnić usługę WebService korzystając wyłącznie z Java SE 6 JDK6), budując standardową aplikację stand alone. Jaka to zrobić?

Tworzymy prostą klasę implementującą funkcje, które chcemy wystawić: 

package ws16;

public class SimpleService {

      public double addNumber(Double a,Double b) {

            return a+b;

      }

      public String echo(String message) {

            return "This is a echo service:" + message;

      }

}

Dodajemy do niej adnotacje, która jest częścią Java SE 6: javax.jws.WebService;

 

package ws16;

import javax.jws.WebService;

import javax.xml.ws.Endpoint;

@WebService

public class SimpleService {

      public double addNumber(Double a,Double b) {

            return a+b;

      }

      public String echo(String message) {

            return "This is a echo service:" + message;

      }

}

Piszemy króciutki kod publikujący instancję naszej klasy jako WebService:

Endpoint.publish(

            "http://localhost:8080/WebServiceExample/circlefunctions",

            new SimpleService());

Takżę ostatecznie mamy jedną klasę:

 

package ws16;

import javax.jws.WebService;

import javax.xml.ws.Endpoint;

@WebService

public class SimpleService {

      public double addNumber(Double a,Double b) {

            return a+b;

      }

      public String echo(String message) {

            return "This is a echo service:" + message;

      }

      public static void main(String[] args) {

            Endpoint.publish(

                        "http://localhost:8080/WebServiceExample/simplefunctions",

                        new SimpleService());

      }       

Kompilujemy ją a potem wykonujemy z wiersza poleceń magiczne polecenie:

"D:\sun\java\jdk1.6.0_06\bin\wsgen" -cp ws16.CircleFunctions 

(Oczywiście każdy wskazuje swoją lokalizację JDK6)

 

Uruchamiamy naszą aplikacje i odwiedzamy adres:

http://localhost:8080/WebServiceExample/simplefunctions?WSDL

Gdzie obejrzymy WSDL naszej usługi. Gotowe WebService zrobiony.

 

Wnioski:

-jednak wydanie Java 6 miało jakiś (głębszy) sens ;-)

Brak komentarzy: