Terry.Li-彬

          虛其心,可解天下之問(wèn);專其心,可治天下之學(xué);靜其心,可悟天下之理;恒其心,可成天下之業(yè)。

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            143 隨筆 :: 344 文章 :: 130 評(píng)論 :: 0 Trackbacks
          Java代碼 復(fù)制代碼
          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.? 服務(wù)接口類
          Java代碼 復(fù)制代碼
          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. 實(shí)現(xiàn)類:
          Java代碼 復(fù)制代碼
          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代碼 復(fù)制代碼
          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啟動(dòng)
          Java代碼 復(fù)制代碼
          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. 測(cè)試類
          Java代碼 復(fù)制代碼
          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. }??



          測(cè)試過(guò)程:
          1) 啟動(dòng)Mule服務(wù)容器
          2) 執(zhí)行PersonClient


          總結(jié):
          ? 1) Mule暴露POJO為一個(gè)服務(wù)還是很簡(jiǎn)單的, 配置非常少
          ? 2) 傳遞和返回Java復(fù)雜數(shù)據(jù)類型,自定義數(shù)據(jù)類型都非常方便。不過(guò),客戶端需要明確知道每個(gè)方法傳遞的參數(shù)個(gè)數(shù)和類型,以及返回的參數(shù)類型,并且需要自己type cast。 在具體項(xiàng)目中,可以自己再做一層封裝或用AOP, 以本地調(diào)用的方式調(diào)用 mule 的web service。
          posted on 2009-09-19 20:42 禮物 閱讀(1741) 評(píng)論(0)  編輯  收藏 所屬分類: AxisESB
          主站蜘蛛池模板: 万盛区| 哈尔滨市| 临沭县| 行唐县| 易门县| 左权县| 临西县| 皋兰县| 莆田市| 八宿县| 曲靖市| 普定县| 抚顺县| 永新县| 定远县| 贺州市| 芒康县| 彭州市| 四川省| 石门县| 广丰县| 靖宇县| 文成县| 祁门县| 克东县| 壶关县| 罗平县| 上杭县| 太谷县| 昌都县| 惠安县| 三穗县| 分宜县| 蒲城县| 黑龙江省| 邛崃市| 兴安盟| 东莞市| 武川县| 太康县| 海口市|