axis入門之代碼篇(1)
jacky于2006廣州配置好了環(huán)境,我們就可以進(jìn)行編碼了.
一: 建立一個普通的java類做我們的server
1
package?com.test.service;
2
3
public?class?TestServer?{
4
?public?String?say(String?arg)?{
5
????????System.out.println("some?one?call?me!");
6
????????return?arg;
7
????}
8
}
這個類定義一個say()的方法提供給客戶端調(diào)用,返回類型是String.
2

3


4


5

6

7

8

ok,這個類是最簡單不過了.
下面建立我們的部署文件:WEB-INF/server-config.wsdd
?1
<?xml?version="1.0"?encoding="UTF-8"?>
?2
<deployment?xmlns="http://xml.apache.org/axis/wsdd/"?xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
?3
?<globalConfiguration>
?4
??<parameter?name="adminPassword"?value="admin"/>
?5
??<parameter?name="attachments.Directory"?value="C:\eclipse\workspace\bookstore\WEB-INF\attachments"/>
?6
??<parameter?name="attachments.implementation"?value="org.apache.axis.attachments.AttachmentsImpl"/>
?7
??<parameter?name="sendXsiTypes"?value="true"/>
?8
??<parameter?name="sendMultiRefs"?value="true"/>
?9
??<parameter?name="sendXMLDeclaration"?value="true"/>
10
??<parameter?name="axis.sendMinimizedElements"?value="true"/>
11
??<requestFlow>
12
???<handler?type="java:org.apache.axis.handlers.JWSHandler">
13
????<parameter?name="scope"?value="session"/>
14
???</handler>
15
???<handler?type="java:org.apache.axis.handlers.JWSHandler">
16
????<parameter?name="scope"?value="request"/>
17
????<parameter?name="extension"?value=".jwr"/>
18
???</handler>
19
??</requestFlow>
20
?</globalConfiguration>
21
?<handler?name="LocalResponder"?type="java:org.apache.axis.transport.local.LocalResponder"/>
22
?<handler?name="Authenticate"?type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
23
?<handler?name="URLMapper"?type="java:org.apache.axis.handlers.http.URLMapper"/>
24
?<service?name="Version"?provider="java:RPC">
25
??<parameter?name="allowedMethods"?value="getVersion"/>
26
??<parameter?name="className"?value="org.apache.axis.Version"/>
27
?</service>
28
??<service?name="TestServer"?provider="java:RPC">
29
??<parameter?name="className"?value="com.test.service.TestServer"/>
30
??<parameter?name="allowedMethods"?value="*"/>
31
??
32
?</service>
33
?<service?name="AdminService"?provider="java:MSG">
34
??<parameter?name="allowedMethods"?value="AdminService"/>
35
??<parameter?name="enableRemoteAdmin"?value="false"/>
36
??<parameter?name="className"?value="org.apache.axis.utils.Admin"/>
37
??<namespace>http://xml.apache.org/axis/wsdd/</namespace>
38
?</service>
39
?<transport?name="local">
40
??<responseFlow>
41
???<handler?type="LocalResponder"/>
42
??</responseFlow>
43
?</transport>
44
?<transport?name="http">
45
??<requestFlow>
46
???<handler?type="URLMapper"/>
47
???<handler?type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
48
??</requestFlow>
49
?</transport>
50
?
51
52
</deployment>

?2

?3

?4

?5

?6

?7

?8

?9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

初看一下,有點復(fù)雜,我們先不管其中具體的配置是什么作用,看一下我們關(guān)注的:
1
<service?name="TestServer"?provider="java:RPC">
2
??<parameter?name="className"?value="com.test.service.TestServer"/>
3
??<parameter?name="allowedMethods"?value="*"/>??
4
?</service>
這一段就是我們配置的service.name是我們給服務(wù)起的名稱.下來的className就是我們寫的類的路徑.再往下就是允許調(diào)用的方法,這里是為全部.
2

3

4

不算復(fù)雜吧!
現(xiàn)在,可以啟動你的web服務(wù)器來看看建立的服務(wù)是否成功了.
看一下我們在web.xml里配置的這么一段:
1
<servlet-mapping>
2
????????<servlet-name>AxisServlet</servlet-name>
3
????????<url-pattern>/services/*</url-pattern>
4
????</servlet-mapping>
知道什么意思了嗎,就是從/services/請求的地址都是我們的service.
2

3

4

從瀏覽器中瀏覽:

那下面就寫一個客戶端代碼調(diào)用我們的service.
?1
?????public?static?void?main(String?[]?args)
?2
????????{
?3
????????????try?{
?4
????????????????Options?options?=?new?Options(args);
?5
????????????????
?6
????????????????String?endpointURL?=?"http://localhost/WebService/services/TestServer";//options.getURL();
?7
????????????????String?textToSend;
?8
????????????????
?9
????????????????args?=?options.getRemainingArgs();
10
????????????????
11
????????????????textToSend?=?"哈哈";
12
????????????????
13
????????????????Service??service?=?new?Service();
14
????????????????Call?call??=?(Call)?service.createCall();
15
?????????????
16
????????????????call.setTargetEndpointAddress(?new?java.net.URL(endpointURL)?);
17
???????????????
18
????????????????//第一個參數(shù)是包名,也就是包名的倒敘(可有可無,因為上面的endpointURL已經(jīng)指定了類),后面是方法名
19
????????????????QName?q?=?new?QName("",?"say");
20
????????????????call.setOperationName(?q?);
21
????????????????call.addParameter(?"arg1",?XMLType.XSD_STRING,?ParameterMode.IN);//傳參數(shù)
22
????????????????call.setReturnType(?XMLType.QNAME_FAULTACTOR);//設(shè)定返回參數(shù)
23
24
????????????????String?ret?=?(String)?call.invoke(?new?Object[]?{?textToSend?}?);
25
????????????????
26
????????????????System.out.println("返回的東西?:?"?+?ret?);
27
????????????????
28
????????????}?catch?(Exception?e)?{
29
????????????????System.err.println(e.toString());
30
????????????}
31
????????}
32
}
在你的web服務(wù)器還跑的時候,運行上面的代碼.自己看看結(jié)果吧.
?2


?3


?4

?5

?6

?7

?8

?9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24


25

26

27

28


29

30

31

32

easy?
posted on 2006-04-29 18:02 jackyhuang 閱讀(906) 評論(1) 編輯 收藏