有了 CXF-01、CXF-02 的铺垫,我们开始更深一步的探索 CXF 的秘密,可以直接按照下面的代码进行更改:
* 当形参、返回值的类型是String、基本数据类型时,CXF可以处理;
* 当形参、返回值的类型是JavaBean式的复合类、List集合、数组等时,CXF可以处理;
* 还有一些像 Map、非JavaBean式的复合类,CXF不可以处理;
* 代码有时比语言更犀利,在代码中前行,在代码中享受汲取的乐趣:
* 1 . 增加一个形参、返回值的类型是JavaBean式的复合类、List集合、数组等的方法
import java.util.List;
import javax.jws.WebService;
import org.fjava.cxf.model.Food;
import org.fjava.cxf.model.User;
@WebService//J2EE文档里查看WebService
public interface HelloWorld {
//返回的String类型
String sayHello(String name);
//这个方法的形参和返回值都是比较复杂的类型,User对象是没有的
List<Food> getFoodsByUser(User user);
}
import java.util.Date;
import java.util.List;
import javax.jws.WebService;
import org.fjava.cxf.model.Food;
import org.fjava.cxf.model.User;
import org.fjava.cxf.ws.HelloWorld;
import org.fjava.cxf.service.UserService;
import org.fjava.cxf.service.UserServiceImpl;
@WebService(endpointInterface="org.fjava.cxf.ws.HelloWorld", serviceName="HelloWorldWs")
//endpointInterface=""表示实现的接口 serviceName是wsdl2java或其他语言后的文件名,可以不和HelloWorldWs相同
public class HelloWorldWs implements HelloWorld {
@Override
public String sayHello(String name) {
return "Hello ! " + name + ",您好" + "现在时间是:" + new Date();
}
@Override
public List<Food> getFoodsByUser(User user) {
// 在实际的项目中,Web Service组件自己并不会去实现业务功能,交给业务逻辑组件去实现
// 它只是调用业务逻辑组件的方法来暴露Web Service
UserService userService = new UserServiceImpl();
return userService.getFoodsByUser(user);
}
}
* 2 . 编写
JavaBean 在 User 里添加了构造方法
public class Foo