日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

XFire完整入門教程

系統 1968 0

網上關于XFire入門的教程不少,要么是講得很簡單,就像Hello World一樣的程序,要么就是通過IDE集成的工具來開發的,這對于不同的人群有諸多不便,關于XFire的一些詳細的信息就不再多講,可以參考官方網站和相關的文檔,這里講一個完整的入門實例。

實例中包括三個情況,我想基本上可以概括所有的需求,或者自己稍加擴展即可。先來看看我們的Interface。

?1 package ?test;
?2
?3 import ?java.util.List;
?4
?5 public ? interface ?IHelloService? {
?6 ???? public ?String?sayHello(String?ttt);
?7 ????
?8 ???? public ?Course?choose(User?u);
?9 ????
10 ???? public ?List??test(List?t);
11 }

這其中包含了簡單對象的傳遞,對象的傳遞,List的傳遞。

具體的開發步驟如下:
1、定義Web Service的接口,代碼見上面的接口定義。

2、實現接口和業務邏輯,代碼如下:

?1 package ?test;
?2
?3 import ?java.util.ArrayList;
?4 import ?java.util.List;
?5
?6 public ? class ?HelloServiceImpl? implements ?IHelloService? {
?7
?8 ???? public ?String?sayHello(String?ttt)? {
?9 ???????? return ? " Hello,? " + ttt;
10 ????}

11 ????
12 ???? public ?Course?choose(User?u) {
13 ????????System.out.println(u.getName());
14 ????????Course?c = new ?Course();
15 ????????c.setName( " Eee " );
16 ???????? return ?c;?
17 ????????
18 ????}

19 ????
20 ???? public ?List??test(List?t) {
21 ???????? for ?( int ?i? = ? 0 ;?i? < ?t.size();?i ++ )? {
22 ????????????System.out.println((String)?t.get(i));
23 ????????}

24 ????????List??al = new ?ArrayList();
25 ????????Course?c = new ?Course();
26 ????????c.setName( " EeeDDDDDD " );
27 ????????al.add(c);
28 ???????? return ?al;
29 ????????
30 ????}

31 }

用到的User和Course兩個類的代碼如下:

?1 package ?test;
?2
?3 public ? class ?User? {
?4 ???? private ?String?name;
?5
?6 ???? public ?String?getName()? {
?7 ???????? return ?name;
?8 ????}

?9
10 ???? public ? void ?setName(String?name)? {
11 ???????? this .name? = ?name;
12 ????}

13 }

14
?1 package ?test;
?2
?3 public ? class ?Course?? {
?4 ???? private ?String?name;
?5
?6 ???? public ?String?getName()? {
?7 ???????? return ?name;
?8 ????}

?9
10 ???? public ? void ?setName(String?name)? {
11 ???????? this .name? = ?name;
12 ????}

13
14 }


3、編寫XFire要求的WebSevice定義描述文件,如下:

?1 <? xml?version="1.0"?encoding="UTF-8" ?>
?2 < beans? xmlns ="http://xfire.codehaus.org/config/1.0" >
?3
?4 ???? < service >
?5 ???????? < name > HelloService </ name >
?6 ???????? < namespace > http://test/ HelloService </ namespace >
?7 ???????? < serviceClass > test.IHelloService </ serviceClass >
?8 ???????? < implementationClass > test.HelloServiceImpl </ implementationClass >
?9 ???? </ service >
10 ????
11 </ beans >

此文件放在src/META-INF/xfire/services.xml,編譯時會自動編譯到classes的相應目錄下面。

4、因為我們用到了List等集合類型,所以需要定義Mapping關系,文件名為:src/test/IHelloService.aegis.xml,代碼如下:

1 <? xml?version="1.0"?encoding="UTF-8" ?>
2 < mappings >
3 ???? < mapping >
4 ???????? < method? name ="test" >
5 ???????????? < parameter? index ="0" ?componentType ="java.lang.String" ? />
6 ???????????? < return-type? componentType ="test.Course" ? />
7 ???????? </ method >
8 ???? </ mapping >
9 </ mappings >

請注意,此文件一定要放到與IHelloService.java相同的目錄下面,否則會出錯。

5、在Web.xml中配置XFire需要用到的Servlet,代碼如下:

?1 <? xml?version="1.0"?encoding="UTF-8" ?>
?2 < web-app? version ="2.4" ?xmlns ="http://java.sun.com/xml/ns/j2ee"
?3 ????xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
?4 ????xsi:schemaLocation ="http://java.sun.com/xml/ns/j2ee?
?5 ????http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
?6
?7 ???? < servlet >
?8 ???????? < servlet-name > XFireServlet </ servlet-name >
?9 ???????? < servlet-class >
10 ????????????org.codehaus.xfire.transport.http.XFireConfigurableServlet
11 ???????? </ servlet-class >
12 ???? </ servlet >
13
14 ???? < servlet-mapping >
15 ???????? < servlet-name > XFireServlet </ servlet-name >
16 ???????? < url-pattern > /servlet/XFireServlet/* </ url-pattern >
17 ???? </ servlet-mapping >
18
19 ???? < servlet-mapping >
20 ???????? < servlet-name > XFireServlet </ servlet-name >
21 ???????? < url-pattern > /services/* </ url-pattern >
22 ???? </ servlet-mapping >
23
24
25 ???? < welcome-file-list >
26 ???????? < welcome-file > index.jsp </ welcome-file >
27 ???? </ welcome-file-list >
28 </ web-app >



此時Web Service的服務端就開發完成了。
我們來看看客戶端的代碼吧,也很簡單,如下:

?1 package ?test;
?2
?3 import ?java.net.MalformedURLException;
?4 import ?java.util.ArrayList;
?5 import ?java.util.List;
?6
?7 import ?org.codehaus.xfire.XFireFactory;
?8 import ?org.codehaus.xfire.client.XFireProxyFactory;
?9 import ?org.codehaus.xfire.service.Service;
10 import ?org.codehaus.xfire.service.binding.ObjectServiceFactory;
11
12 public ? class ?Client? {
13
14 ???? public ? static ? void ?main(String[]?args)? {
15
16 ????????Service?srvcModel? = ? new ?ObjectServiceFactory()
17 ????????????????.create(IHelloService. class );
18 ????????XFireProxyFactory?factory? = ? new ?XFireProxyFactory(XFireFactory
19 ????????????????.newInstance().getXFire());
20
21 ????????String?helloWorldURL? = ? " http://localhost:8080/xfiretest/services/ HelloService " ;
22 ???????? try ? {
23 ????????????IHelloService?srvc? = ?(IHelloService)?factory.create(srvcModel,
24 ????????????????????helloWorldURL);
25 ????????????System.out.println(srvc.sayHello( " Robin " ));
26 ????????????
27 ????????????User?u = new ?User();
28 ????????????u.setName( " RRRRR " );
29 ????????????Course?c = srvc.choose(u);
30 ????????????System.out.println(c.getName());
31 ????????????
32 ????????????List??al = new ?ArrayList();
33 ????????????al.add( " 1212 " );
34 ????????????al.add( " 2222 " );
35 ????????????List?t = srvc.test(al);
36 ???????????? for ?( int ?i? = ? 0 ;?i? < ?t.size();?i ++ )? {
37 ????????????????Course?co = (Course)t.get(i);
38 ????????????????System.out.println(co.getName());
39 ????????????}

40 ????????????
41 ????????????
42 ????????}
? catch ?(MalformedURLException?e)? {
43 ????????????e.printStackTrace();
44 ????????}

45
46 ????}

47
48 }

49


以上代碼均無注釋,因為都非常簡單,呵呵。如有不清楚的地方,請留言!

XFire完整入門教程


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。。?/p>

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 聊城市| 信丰县| 九龙坡区| 大姚县| 平谷区| 浦江县| 广饶县| 平陆县| 尚义县| 石柱| 莒南县| 图片| 驻马店市| 逊克县| 伽师县| 滨海县| 高陵县| 乌拉特中旗| 东明县| 华坪县| 瓦房店市| 绥棱县| 嘉兴市| 黑龙江省| 东阳市| 桦甸市| 满城县| 太原市| 嘉兴市| 古田县| 镇江市| 嘉义市| 昭苏县| 门源| 日土县| 普宁市| 萝北县| 大渡口区| 沛县| 岗巴县| 尚志市|