Terry.Li-彬

          虛其心,可解天下之問;專其心,可治天下之學;靜其心,可悟天下之理;恒其心,可成天下之業。

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            143 隨筆 :: 344 文章 :: 130 評論 :: 0 Trackbacks
          Java代碼 復制代碼
          1. ? public ? class ?Person? ??
          2. ??{ ??
          3. private ?String?name; ??
          4. private ?String?surname; ??
          5. private ?Date?registerDate?=? new ?Date(); ??
          6. private ? int ?age?=? 20 ; ??
          7. ???...??


          2.? 服務接口類
          Java代碼 復制代碼
          1. ?public?interface?PersonService?{??? ??
          2. String?printPerson(Person?person)?;? ??
          3. Person?createPerson(String?name,String?surname,int?age);???? ??
          4. ????Person[]?batchCreatePerson(String?namePattern); ??
          5. ?}??


          3. 實現類:
          Java代碼 復制代碼
          1. package?demo.mule.person; ??
          2. ??
          3. public?class?PersonServiceImpl?implements?PersonService?{ ??
          4. ????public?String?printPerson(Person?person)?{?????? ??
          5. ????????return?"person:name="?+?person.getName()?+",surname="?+?person.getSurname(); ??
          6. ????} ??
          7. ???? ??
          8. ????/** ?
          9. ?????*?test?return?a?complex?type?by?web?service ?
          10. ?????*/??
          11. ????public?Person?createPerson(String?name,?String?surname,int?age)?{ ??
          12. ????????Person?p?=?new?Person(name,surname); ??
          13. ????????p.setAge(age); ??
          14. ????????System.out.println("a?person?is?created:"?+?p.getName()); ??
          15. ????????return?p; ??
          16. ????} ??
          17. ???? ??
          18. ????public?Person[]?batchCreatePerson(String?namePattern)?{ ??
          19. ????????Person[]?persons?=?new?Person[3]; ??
          20. ????????for?(int?i?=?0;?i?<?persons.length;?i++)?{ ??
          21. ????????????Person?p?=?new?Person(namePattern?+?i,namePattern?+?i); ??
          22. ????????????p.setAge(?20?+?i?); ??
          23. ????????????persons[i]?=?p; ??
          24. ????????} ??
          25. ????????return?persons; ??
          26. ????} ??
          27. }??


          4. person-config.xml
          Xml代碼 復制代碼
          1. ??<?xml?version="1.0"?encoding="UTF-8"?>??
          2. <!DOCTYPE?mule-configuration?PUBLIC?"-//MuleSource?//DTD?mule-configuration?XML?V1.0//EN"?"http://mule.mulesource.org/dtds/mule-configuration.dtd">??
          3. <mule-configuration?id="mule-test"?version="1.0">??
          4. ????<model?name="personService">??
          5. ????????<!--?test:?http://localhost:8082/services/personService?method=createPerson?-->??????????? ??
          6. ????????<mule-descriptor?name="personService"?implementation="demo.mule.person.PersonServiceImpl">??
          7. ????????????<inbound-router>??
          8. ????????????????<endpoint?address="axis:http://localhost:8082/services"></endpoint>??
          9. ????????????</inbound-router>????? ??
          10. ????????????<!--?not?nessesary? ??
          11. ????????????<properties>??
          12. ????????????????<property?name="style"?value="wrapped"/>??
          13. ????????????????<property?name="use"?value="literal"/>??
          14. ????????????</properties>????? ??
          15. ????????????-->??
          16. ????????</mule-descriptor>???????????? ??
          17. ????</model>??
          18. </mule-configuration>??



          5. server啟動
          Java代碼 復制代碼
          1. ??public?class?PersonServiceLaucher?{ ??
          2. public?static?void?main(String[]?args)?throws?ConfigurationException?{ ??
          3. ????MuleXmlConfigurationBuilder?muleXmlConfigurationBuilder?=?new?MuleXmlConfigurationBuilder(); ??
          4. ????UMOManager?manager?=?muleXmlConfigurationBuilder.configure("demo/mule/person/person-config.xml"); ??
          5. } ??



          6. 測試類
          Java代碼 復制代碼
          1. ?public?class?PersonClient?{???? ??
          2. ????private?MuleClient?muleClient?;? ??
          3. ????public?PersonClient()?{ ??
          4. ????????try?{ ??
          5. ????????????muleClient?=?new?MuleClient(); ??
          6. ????????}?catch?(UMOException?e)?{?????? ??
          7. ????????????e.printStackTrace(); ??
          8. ????????} ??
          9. ????} ??
          10. ??
          11. ????public?void?testPrintPerson()?throws?Exception?{ ??
          12. ???????? ??
          13. ????????Person?person?=?new?Person("David","Jones"); ??
          14. ????????UMOMessage?msg?=?new?MuleMessage(person?); ??
          15. ????????UMOMessage?message?=?muleClient.send("axis:http://localhost:8082/services/personService?method=printPerson",msg); ??
          16. ???????? ??
          17. ????????System.out.println("message:"?+?message.getPayloadAsString()); ??
          18. ????} ??
          19. ???? ??
          20. ????public?void?testCreatePerson()?throws?Exception?{ ??
          21. ????????Object[]?args?=?new?Object[]{"小龍","李",?new?Integer(23)}; ??
          22. ????????UMOMessage?msg?=?new?MuleMessage(args?); ??
          23. ????????UMOMessage?message?=?muleClient.send("axis:http://localhost:8082/services/personService?method=createPerson",msg); ??
          24. ???? ??
          25. ????????Person?p?=?(Person)message.getPayload(); ??
          26. ????????System.out.println("message:"?+?message.getPayloadAsString()); ??
          27. ????????System.out.println("payload:"?+?p.getName()?+","?+?p.getSurname()?+","?+?p.getAge()); ??
          28. ????} ??
          29. ???? ??
          30. ????public?void?testBatchCreatePerson()?throws?UMOException?{ ??
          31. ????????Object[]?args?=?new?Object[]{"Admin"}; ??
          32. ????????UMOMessage?msg?=?new?MuleMessage(args?); ??
          33. ????????UMOMessage?message?=?muleClient.send("axis:http://localhost:8082/services/personService?method=batchCreatePerson",msg); ??
          34. ???????? ??
          35. ????????Person[]?ps?=?(Person[])message.getPayload(); ??
          36. ????????System.out.println("persons:"?+?ps.length); ??
          37. ????????for?(int?i?=?0;?i?<?ps.length;?i++)?{ ??
          38. ????????????Person?p?=?ps[i]; ??
          39. ????????????System.out.println("person:"?+?p.getName()?+","?+?p.getSurname()?+","?+?p.getAge()); ??
          40. ????????}??????? ??
          41. ????} ??
          42. ????public?static?void?main(String[]?args)?throws?Exception?{ ??
          43. ????????PersonClient?personClient?=?new?PersonClient(); ??
          44. ????????personClient.testPrintPerson(); ??
          45. ????????personClient.testCreatePerson();???????? ??
          46. ????????personClient.testBatchCreatePerson(); ??
          47. ????} ??
          48. }??



          測試過程:
          1) 啟動Mule服務容器
          2) 執行PersonClient


          總結:
          ? 1) Mule暴露POJO為一個服務還是很簡單的, 配置非常少
          ? 2) 傳遞和返回Java復雜數據類型,自定義數據類型都非常方便。不過,客戶端需要明確知道每個方法傳遞的參數個數和類型,以及返回的參數類型,并且需要自己type cast。 在具體項目中,可以自己再做一層封裝或用AOP, 以本地調用的方式調用 mule 的web service。
          posted on 2009-09-19 20:42 禮物 閱讀(1741) 評論(0)  編輯  收藏 所屬分類: AxisESB
          主站蜘蛛池模板: 出国| 淳安县| 井研县| 皮山县| 百色市| 隆化县| 北海市| 扶余县| 哈尔滨市| 吴江市| 华阴市| 宣威市| 永靖县| 祁连县| 自治县| 高要市| 获嘉县| 敖汉旗| 延安市| 广昌县| 芷江| 新密市| 湟源县| 诸城市| 阿克| 弋阳县| 富顺县| 阜城县| 南召县| 浪卡子县| 石城县| 阳春市| 兰坪| 庐江县| 兴海县| 温泉县| 昌江| 渭源县| 康乐县| 富顺县| 婺源县|