亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

XFire完整入門教程

系統(tǒng) 1661 0

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

實例中包括三個情況,我想基本上可以概括所有的需求,或者自己稍加擴展即可。先來看看我們的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的傳遞。

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

2、實現(xiàn)接口和業(yè)務邏輯,代碼如下:

?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關(guān)系,文件名為: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的服務端就開發(fā)完成了。
我們來看看客戶端的代碼吧,也很簡單,如下:

?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完整入門教程


更多文章、技術(shù)交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 性感美女一级毛片 | 国产一区二区精品久 | 亚洲精品区一区二区三区四 | 国产精品久久久久久久久久妇女 | 国产一区视频在线 | 狠狠色丁香婷婷综合欧美 | 日韩中文字幕推理片 | 亚洲国产影院 | 天天操天天插天天干 | 亚洲性大片 | 国产va免费高清在线观看 | 99热这里只有精品6免费 | 中文字幕视频免费在线观看 | 色综合久久中文色婷婷 | 久久国产精品久久国产精品 | 国产成人久久综合二区 | 天天摸天天碰色综合网 | 国产欧美一区二区另类精品 | 国产精品免费一区二区三区四区 | 国产成人丝袜精品自啪在线 | 一级毛片区 | 亚洲专区区免费 | 性网站免费 | 色综合久久久久综合体桃花网 | 夜色精品国产一区二区 | 亚洲欧美乱综合图片区小说区 | 久久欧美精品 | 午夜精品成年片色多多 | 伊人久久大香焦 | 妖精视频国产 | 亚洲视频黄色 | 亚洲欧美激情综合第一区 | 美女一级毛片免费不卡视频 | 久久99亚洲精品久久频 | 欧美日韩中文视频 | 中文在线免费视频 | 高清人人天天夜夜曰狠狠狠狠 | 国产精品九九久久精品女同 | 久草精品在线播放 | 日日摸日日碰夜夜爽久久 | 夜夜操天天摸 |