前面講的是處理簡單類型,今天這裏來說下CXF處理JavaBean以及複合類型,好比集合;java
這裏實例是客戶端傳一個JavaBean,服務器端返回集合類型;程序員
在原來的項目實例基礎上,咱們先建立一個實體類User:web
package com.wishwzp.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實體類:服務器
package com.wishwzp.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,經過用戶查找角色:架構
package com.wishwzp.webservice; import java.util.List; import javax.jws.WebService; import com.wishwzp.entity.Role; import com.wishwzp.entity.User; @WebService public interface HelloWorld { public String say(String str); public List<Role> getRoleByUser(User user); }
而後HelloWorld接口實現類 HelloWorldImpl寫下新增的方法的具體實現,咱們這裏寫死,模擬下便可:eclipse
package com.wishwzp.webservice.impl; import java.util.ArrayList; import java.util.List; import javax.jws.WebService; import com.wishwzp.entity.Role; import com.wishwzp.entity.User; import com.wishwzp.webservice.HelloWorld; @WebService public class HelloWorldImpl implements HelloWorld{ public String say(String str) { return "hello " + str; } public List<Role> getRoleByUser(User user) { // TODO Auto-generated method stub List<Role> roleList=new ArrayList<Role>(); // 模擬 直接寫死 if(user!=null){ if(user.getUserName().equals("wishwzp") && 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工具從新生成代碼,這裏就再也不講;測試
如:this
個人地址是:D:\eclipse_workspace\WS_Client\src\main\java 大家的可能和我不同:spa
而後咱們進入dos,進入上面的本地硬盤地址,而後執行命令:wsdl2java http://192.168.0.110/helloWorld?wsdl
這裏我看到,實體類,以及接口實現,代碼都生成了。
咱們改下Client類:
package com.wishwzp.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("wishwzp測試")); 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()); } } }
運行截圖: