隨筆 - 119  文章 - 3173  trackbacks - 0
          <2008年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          交友莫獨(dú)酒,茅臺西鳳游。
          口干古井貢,心徜洋河流。
          稱多情杜康,趟無量雙溝。
          贊中華巍巍,無此不銷愁。

          常用鏈接

          留言簿(68)

          隨筆分類(136)

          隨筆檔案(122)

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 526071
          • 排名 - 93

          最新評論

          java6 web service無法傳遞hashmap和arraylist,大失所望之余,不得不思考一下,實(shí)際應(yīng)用中最常用的兩個集合對象就是不能傳遞么?

          經(jīng)過一番思考+翻閱資料。于是終極解決方案終于出現(xiàn),--------------------------------那就是:
          用數(shù)組.

          先看代碼,再討論:
          服務(wù)端:
          ?1?package?service;
          ?2?
          ?3?import?javax.jws.WebMethod;
          ?4?import?javax.jws.WebService;
          ?5?import?javax.jws.soap.SOAPBinding;
          ?6?
          ?7?import?modle.UserInfo;
          ?8?
          ?9?@WebService(targetNamespace?=?"http://jdk.study.hermit.org/testarray")
          10?@SOAPBinding(style?=?SOAPBinding.Style.RPC)
          11?public?class?GetArray?{
          12?????
          13?????@WebMethod
          14?????public?UserInfo?[]?sayHello(int?n)?{
          15?????????UserInfo?[]?userlist?=?new?UserInfo[n];
          16?????????for?(int?i?=?0;?i?<?n;?i++)?{
          17?????????????userlist[i]?=?new?UserInfo();
          18?????????????userlist[i].setId(i);
          19?????????????userlist[i].setName("name"?+?i);
          20?????????}
          21?????????return?userlist;
          22?????}
          23?}
          客戶端:
          ?1?package?test;
          ?2?
          ?3?import?static?org.junit.Assert.assertNotNull;
          ?4?
          ?5?import?java.util.List;
          ?6?
          ?7?import?org.hermit.study.jdk.testarray.GetArray;
          ?8?import?org.hermit.study.jdk.testarray.GetArrayService;
          ?9?import?org.hermit.study.jdk.testarray.UserInfo;
          10?import?org.hermit.study.jdk.testarray.UserInfoArray;
          11?import?org.junit.Test;
          12?
          13?public?class?TestArray?{
          14?????@Test
          15?????public?void?sayHello()?{
          16?????????GetArrayService?service?=?new?GetArrayService();
          17?????????assertNotNull(service);
          18?????????GetArray?obj?=?service.getGetArrayPort();
          19?????????assertNotNull(obj);
          20?????????UserInfoArray?usrArray?=?obj.sayHello(5);
          21?????????assertNotNull(usrArray);
          22?????????List<UserInfo>?usrList?=?usrArray.getItem();
          23?????????assertNotNull(usrList);
          24?????????for?(UserInfo?info?:?usrList)?{
          25?????????????System.out.println(info.getId());
          26?????????????System.out.println(info.getName());
          27?????????}
          28?????}
          29?}

          從代碼中看到,我們在服務(wù)端返回的是一個對象數(shù)組,到了客戶端,已經(jīng)被自動轉(zhuǎn)換成我們魂?duì)繅衾@的list,而且是類型安全的。泛型+foreach用起來是多么的愜意。至此,困擾已久的問題終于解決了。


          那么這一切到底是為什么呢?
          一切要從web service的本質(zhì)說起,來吧,我們一起復(fù)習(xí)一下概念:

          Web?Service是為實(shí)現(xiàn)“基于web無縫集成”的目標(biāo)而提出的全新概念,希望通過Web?Service能夠?qū)崿F(xiàn)不同的系統(tǒng)之間能夠用“軟件-軟件對話”的方式相互調(diào)用,打破軟件應(yīng)用、網(wǎng)站和各種設(shè)備之間格格不入的狀態(tài)。

          Web?Service是一個應(yīng)用程序,它向外界暴露一個能夠通過Web進(jìn)行調(diào)用的API,這就是說,能夠用編程的方法通過web調(diào)用來實(shí)現(xiàn)某個功能的應(yīng)用程序。

          Web?Service是一種新的Web應(yīng)用程序分支,它們是自包含、自描述,模塊化的應(yīng)用,可以在網(wǎng)絡(luò)中被描述、發(fā)布、查找以及通過Web調(diào)用。

          Web?Service概述

          Web?Service平臺需要一套協(xié)議來實(shí)現(xiàn)分布式應(yīng)用程序的創(chuàng)建。任何平臺都有它的數(shù)據(jù)表示方法和類型系統(tǒng)。要實(shí)現(xiàn)互操作性,Web?Service平臺必須提供一套標(biāo)準(zhǔn)的類型系統(tǒng),用于溝通不同的平臺、編程語言和組建模型中的不同類型系統(tǒng)。

          不同語言,不同平臺間的數(shù)據(jù)傳遞就是問題的本質(zhì)。
          web servie中盡量不要使用本地語言的對象比如hashmap等,你不能保證調(diào)用者使用的語言也有這個對象。


          這是一篇很久前寫了一半的文章。后來太忙就擱置了,今天終于補(bǔ)完了。
          posted on 2008-05-28 10:33 交口稱贊 閱讀(4067) 評論(3)  編輯  收藏 所屬分類: Java6

          FeedBack:
          # re: 學(xué)習(xí)Java6(一) WebServices (7)傳遞集合對象終極解決方案 2008-07-23 10:40 ponpon
          你好,恩先謝謝你的文章,文章中提到了傳遞對象數(shù)組的問題,可是文中只是說了能從服務(wù)器端把對象數(shù)組傳遞回給客戶端,請問客戶端能把對象數(shù)組傳遞給服務(wù)器端嗎?意思是說在服務(wù)器端有這樣的接口:
          public String sayHello( UserInfo[] users );
          望能回信: javapon@163.com  回復(fù)  更多評論
            
          # re: 學(xué)習(xí)Java6(一) WebServices (7)傳遞集合對象終極解決方案 2009-06-15 12:03 Ricky
          謝謝,學(xué)習(xí)了。  回復(fù)  更多評論
            
          # re: 學(xué)習(xí)Java6(一) WebServices (7)傳遞集合對象終極解決方案[未登錄] 2012-11-16 16:23 wu
          你在這個對象中放集合和hasmap等數(shù)據(jù),你再這么做試試  回復(fù)  更多評論
            
          主站蜘蛛池模板: 嵊州市| 古浪县| 金秀| 达尔| 云龙县| 河东区| 新丰县| 广平县| 西充县| 凤庆县| 同江市| 田阳县| 宝鸡市| 镇宁| 宁陕县| 裕民县| 揭阳市| 佛山市| 西丰县| 岳普湖县| 兴海县| 濮阳县| 清水河县| 拜城县| 都兰县| 图木舒克市| 运城市| 武隆县| 苏州市| 同仁县| 准格尔旗| 高青县| 平昌县| 宁河县| 湖北省| 甘孜县| 靖州| 昭苏县| 改则县| 灵台县| 古蔺县|