CXF处理JavaBean以及复合类型

Posted 爱你爱自己

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CXF处理JavaBean以及复合类型相关的知识,希望对你有一定的参考价值。

前面讲的是处理简单类型,今天这里来讲下CXF处理JavaBean以及复合类型,比如集合;

 

这里实例是客户端传一个JavaBean,服务器端返回集合类型;

 

在原来的项目实例基础上,我们先创建一个实体类User:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package com.java1234.entity;
 
/**
 * 用户实体类
 * @author Administrator
 *
 */
public class User {
 
    private Integer id; // 编号
    private String userName; // 用户名
    private String password; // 密码
     
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
     
     
}

 

再创建一个Role实体类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package com.java1234.entity;
 
/**
 * 角色实体
 * @author Administrator
 *
 */
public class Role {
 
    private Integer id; // 编号
    private String roleName; // 角色名称
     
     
     
    public Role() {
        super();
        // TODO Auto-generated constructor stub
    }
     
     
     
    public Role(Integer id, String roleName) {
        super();
        this.id = id;
        this.roleName = roleName;
    }
 
 
 
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getRoleName() {
        return roleName;
    }
    public void setRoleName(String roleName) {
        this.roleName = roleName;
    }
     
     
}

 

 

然后HelloWorld再加一个接口方法getRoleByUser,通过用户查找角色:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package com.java1234.webservice;
 
import java.util.List;
 
import javax.jws.WebService;
 
import com.java1234.entity.Role;
import com.java1234.entity.User;
 
@WebService
public interface HelloWorld {
 
    public String say(String str);
     
    public List<Role> getRoleByUser(User user);
}

 

 

然后HelloWorld接口实现类 HelloWorldImpl写下新增的方法的具体实现,我们这里写死,模拟下即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package com.java1234.webservice.impl;
 
import java.util.ArrayList;
import java.util.List;
 
import javax.jws.WebService;
 
import com.java1234.entity.Role;
import com.java1234.entity.User;
import com.java1234.webservice.HelloWorld;
 
@WebService
public class HelloWorldImpl implements HelloWorld{
 
    public String say(String str) {
        return "Hello "+str;
    }
 
    public List<Role> getRoleByUser(User user) {
        List<Role> roleList=new ArrayList<Role>();
        // 模拟 直接写死
        if(user!=null){
            if(user.getUserName().equals("java1234") && user.getPassword().equals("123456")){
                roleList.add(new Role(1,"技术总监"));
                roleList.add(new Role(2,"架构师"));
            }else if(user.getUserName().equals("jack") && user.getPassword().equals("123456")){
                roleList.add(new Role(3,"程序员"));
            }
            return roleList;
        }else{
            return null;          
        }
         
    }
     
     
 
}

 

服务端其他地方不用动;

 

下面我们来处理下客户端,和前面讲的一样。我们用wsdl2java工具重新生成代码,这里就不再讲;

 

技术图片

 

这里我看到,实体类,以及接口实现,代码都生成了。

 

我们改下Client类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package com.java1234.webservice;
 
import java.util.List;
 
public class Client {
 
    public static void main(String[] args) {
        HelloWorldService service=new HelloWorldService();
        HelloWorld helloWorld=service.getHelloWorldPort();
        //System.out.println(helloWorld.say("java1234"));
        User user=new User();
        user.setUserName("jack");
        user.setPassword("123456");
        List<Role> roleList=helloWorld.getRoleByUser(user);
        for(Role role:roleList){
            System.out.println(role.getId()+","+role.getRoleName());
        }
    }
}

 

运行截图:

技术图片

 

完整代码:http://pan.baidu.com/s/1c1drMYO

以上是关于CXF处理JavaBean以及复合类型的主要内容,如果未能解决你的问题,请参考以下文章

cxf处理一些Map等复杂类型

CXF+JAXB处理复杂数据

学习webservice之cxf:cxf处理map等复杂类型

Hive探秘--复合数据类型

Web Service学习之六:CXF解决无法处理的数据类型

oracle PLSQL块和复合类型