以上例子只是简单调用了WebService,参数是简单的String,如果我们客户端需要获得复杂的,自定义的对象可以吗?答案是EJB容器也很完美的做到了
服务端代码如下
package webservice.HelloWebService;
import javax.ejb.Stateless; import javax.jws.WebService; import webservice.HelloWebService.pojo.Car;
@Stateless @WebService(name = "HelloWebService") public class CarWebService {
public Car callCar(String name) { System.out.println("客户" + name + "端调用了服务器端的代码");
Car car = new Car(); car.setName("宝马"); car.setMessage("BMW");
return car; }
} |
这个服务类调用了一个Car实体类,这个类是一个自定义的POJO类
代码如下
package webservice.HelloWebService.pojo;
public class Car {
private String name; private String message;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getMessage() { return message; }
public void setMessage(String message) { this.message = message; }
@Override public String toString() { // TODO Auto-generated method stub return "name:" + name + " -- " + message; }
} |
客户端在生成代码的时候也会将这个返回值的实体类代码生成一下。客户端生成的程序如下
测试代码如下
public static void main(String[] args) { CarWebServiceService carWebServiceService = new CarWebServiceService(); HelloWebService helloWebService = carWebServiceService .getHelloWebServicePort(); Car car = helloWebService.callCar("素续缘"); System.out.println(car.getName() + "--" + car.getMessage()); } |