2009年7月6日

Web service (JAX-WS) in JDK 6

JSR 224: XML-Based Web Services (JAX-WS) 2.0
JAX-WS Reference Implementation
Web Services tutorial in JavaEE5 tutorial
Webservices in JDK 6 - Vivek Pandey's Blog

// Web service Endpoint
// -- $ vim src/test/Master.java --
package test;

import java.util.Collection;

public class Master {
private String name;
private Collection slaves;

public String getName() {
return name;
}

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

public Collection getSlaves() {
return slaves;
}

public void setSlaves(Collection slaves) {
this.slaves = slaves;
}

}

// -- $ vim src/test/Slave.java --
package test;

import javax.xml.bind.annotation.XmlTransient;

public class Slave {
private String name;

private Master master;

public String getName() {
return name;
}

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

@XmlTransient()
public Master getMaster() {
return master;
}

public void setMaster(Master master) {
this.master = master;
}

}

// -- $ vim src/test/EchoWeb.java --
package test;

import java.util.ArrayList;
import java.util.Collection;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;

@WebService()
public class EchoWeb {

@WebMethod(operationName = "echo")
public Master echo(@WebParam(name = "name")
String name) {
Master master = new Master();
Collection slaves = new ArrayList();
master.setSlaves(slaves);
master.setName(name);

Slave slave1 = new Slave();
slave1.setName("slave1");
slaves.add(slave1);

Slave slave2 = new Slave();
slave2.setName("slave2");
slaves.add(slave2);

return master;
}

public static void main(String[] args) throws Exception {
EchoWeb echoWebService = new EchoWeb();
Endpoint.publish("http://localhost/EchoWebService", echoWebService);
}

}

// compile and run server
$ apt -d classes -s generated-src src/test/*.java
$ java -cp ./classes test.EchoWeb
$ firefox http://localhost/EchoWebService?wsdl

// Web Services Client
$ wsimport -d classes -s src http://localhost/EchoWebService?wsdl

// -- $ vim src/test/Main.java --
package test;

import java.util.List;

public class Main {

public static void main(String[] args) {
EchoWebService echoWebService = new EchoWebService();
Master master = echoWebService.getEchoWebPort().echo("Hello World");
System.out.println("Master Name: " + master.getName());
List slaves = master.getSlaves();
for (Slave slave : slaves) {
System.out.println("Slave Name: " + slave.getName());
}
}

}

// compile and run client
$ javac -cp classes -d classes src/test/Main.java
$ java -cp classes test.Main
Master Name: Hello World
Slave Name: slave1
Slave Name: slave2

沒有留言:

網誌存檔