(四)輸入參數與輸出類型為復雜類型的web服務
阿新 • • 發佈:2017-10-12
test over 復雜 exce 都沒有 exceptio pan 消息 字符串類型
一、 服務端發布服務
1.1 定義復雜類型:UserBean.java
package service; public class UserBean { private String userId; private String userName; private String passWord; //隱藏getset方法 }
1.2 定義服務接口 :UserService.java
package service; import javax.jws.WebParam; import javax.jws.WebResult; import javax.jws.WebService;/** * 這是一個web服務 * @author Administrator * */ @WebService public interface UserService { /** * 獲取用戶 * @return */ @WebResult(name = "getUserResult") public UserBean getUser(); /** * 設置用戶 * @param user */ public void setUser(@WebParam(name = "userBean") UserBean user); }
1.3 定義服務實現類
package service; import javax.jws.WebParam; import javax.jws.WebResult; import javax.jws.WebService; @WebService(endpointInterface="service.UserService") public class UserServiceimpl implements UserService { @Override public UserBean getUser() { UserBean user = newUserBean(); user.setPassWord("123"); user.setUserId("001"); user.setUserName("服務端返回的用戶"); return user; } @Override public void setUser(UserBean user) { if (user != null) { System.out.println("客戶端設置的用戶=" + user); } } }
1.4 發布服務
package publish; import javax.xml.ws.Endpoint; import service.UserServiceimpl; public class TestPublish { public static void main(String[] args) { Endpoint.publish("http://localhost:3030/userBean", new UserServiceimpl()); System.out.println("發布成功....."); } }
二、客戶端接受、發送消息到服務端
2.1 用工具生成客戶端代碼(具體步驟參照上一章)
2.2 發送、接收消息
package test; import java.rmi.RemoteException; import service.UserBean; import service.UserService; import service.UserServiceProxy; public class TestMain { public static void main(String[] args) throws RemoteException { /** * 獲取服務端返回的用戶 */ UserService userService=new UserServiceProxy().getUserService(); UserBean user=userService.getUser(); System.out.println(user.getUserId()+"\t"+user.getUserName()); /** * 客戶端設置用戶 */ UserBean userbean=new UserBean(); userbean.setUserId("2"); userbean.setUserName("客戶端設置的用戶"); userbean.setPassWord("123520"); new UserServiceProxy().setUser(userbean); } }
結果:
- 註意:於普通的 Java 數據類型、JavaBean、List 而言,SOAP 服務可以完全將其處理(序列化與反序列化),這些都沒有任何問題,但對於 Map 對象而言,不能再放其他復雜類型。
- 一般來說,參數只傳字符串類型,因為web服務可以不同語言調用的,而java復雜類型其他語言可能沒有,但是所有語言共有字符串類型。而傳遞的字符串可以將數據封裝成json/xml格式的字符串,然後客戶端接收到json/xml格式的字符串再進行解析即可。
(四)輸入參數與輸出類型為復雜類型的web服務