Java ist auch eine Insel

Montag, Februar 12, 2007

XFire + JSR 181 Annotations + Jetty = Simple Web-Service

package xfire;

import javax.jws.WebMethod;
import javax.jws.WebService;

@WebService( serviceName = "GreeterService" )
public class GreeterService
{
@WebMethod
public String greet( Person p )
{
return "Hello " + p.getName() + "!";
}
}


package xfire;

public class Person
{
private String name;

public Person()
{
}

public Person( String name )
{
this.name = name;
}


public String getName()
{
return name;
}

public void setName( String name )
{
this.name = name;
}
}


package xfire;

import org.codehaus.xfire.XFire;
import org.codehaus.xfire.XFireFactory;
import org.codehaus.xfire.annotations.AnnotationServiceFactory;
import org.codehaus.xfire.annotations.jsr181.Jsr181WebAnnotations;
import org.codehaus.xfire.server.http.XFireHttpServer;
import org.codehaus.xfire.service.Service;

public class ServiceServer
{
public static void main( String[] args ) throws Exception
{
XFire xfire = XFireFactory.newInstance().getXFire();
AnnotationServiceFactory factory = new AnnotationServiceFactory(
new Jsr181WebAnnotations(),
xfire.getTransportManager() );
Service service = factory.create( GreeterService.class );
xfire.getServiceRegistry().register( service );
new XFireHttpServer().start();
// http://localhost:8081/GreeterService?wsdl
}
}

package xfire;

import java.net.MalformedURLException;

import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;

public class ServiceClient
{
public static void main( String[] args ) throws MalformedURLException
{
ObjectServiceFactory serviceFactory = new ObjectServiceFactory();
Service serviceModel = serviceFactory.create( GreeterService.class );

GreeterService service = (GreeterService)
new XFireProxyFactory().create( serviceModel,
"http://localhost:8081/GreeterService" );
String s = service.greet( new Person( "Ulli" ) );
System.out.println( s );
}
}

Labels:

AddThis Social Bookmark Button

4 Comments:

  • Hallo, erst einmal ein großes Lob für die tollen Angebote und ihr Buch! Gerade als für mich als Anfänger eine wertvolle Hilfe... Ich benutze XFire als Messenger, allerdings kann ich ihren Post nicht ganz nachvollziehen. Um es mal platt zu formulieren: Was kann/macht das Programm? Über eine kurze Erklärung würde ich mich sehr freuen! David

    By Anonymous Anonym, at April 04, 2007 3:47 PM  

  • Mit dem Framework XFire lassen sich leicht Web-Services anbieten (Server) und nutzen (Client). Da Web-Services (WS) im Allgemeinen über HTTP laufen, muss auf einem Web-Server (Tomcat, Jetty, ...) ein Servlet die Anfragen entgegennehmen. Die Konfiguration eines Servlets ist immer etwas lästig, doch XFire bringt hier gleich ein kleines Paket mit an, um mit Jetty einen WS anzubieten. Das ist also der Teil XFire + Jetty. Nun müssen Metadaten beschrieben werden (GreeterService). Dafür gibt's auch viele Möglichkeiten, doch Metadaten über Annotationen (beschreiben in JSR 181), sind heute modern. Das ist XFire + Annotationen. Person ist einfach eine Bean, die Übertragen werden soll.

    By Blogger Christian Ullenboom, at April 04, 2007 8:25 PM  

  • Hallo nochmal, vielen Dank für die Erklärung! Habs jetzt halbwegs auf die Reihe bekommen ;) -Danke!
    David

    By Anonymous Anonym, at April 10, 2007 4:30 PM  

  • Vielen Dank! Hat mir geholfen.

    By Blogger Rafal Dorociak, at November 27, 2007 10:54 AM  

Kommentar veröffentlichen

<< Home