半生心半生緣

          JAVA人生篇章

          axis入門之代碼篇(1)

          jacky于2006廣州

          配置好了環(huán)境,我們就可以進行編碼了.
          一: 建立一個普通的java類做我們的server
          1package?com.test.service;
          2
          3public?class?TestServer?{
          4?public?String?say(String?arg)?{
          5????????System.out.println("some?one?call?me!");
          6????????return?arg;
          7????}

          8}
          這個類定義一個say()的方法提供給客戶端調用,返回類型是String.
          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>

          初看一下,有點復雜,我們先不管其中具體的配置是什么作用,看一下我們關注的:
          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是我們給服務起的名稱.下來的className就是我們寫的類的路徑.再往下就是允許調用的方法,這里是為全部.
          不算復雜吧!
          現(xiàn)在,可以啟動你的web服務器來看看建立的服務是否成功了.
          看一下我們在web.xml里配置的這么一段:
          1<servlet-mapping>
          2????????<servlet-name>AxisServlet</servlet-name>
          3????????<url-pattern>/services/*</url-pattern>
          4????</servlet-mapping>
          知道什么意思了嗎,就是從/services/請求的地址都是我們的service.
          從瀏覽器中瀏覽:
          http://localhost/WebService/services/
          將會顯示你現(xiàn)在所有的服務!那么表示我們建立的服務已經(jīng)成功.
          那下面就寫一個客戶端代碼調用我們的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ù)
          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服務器還跑的時候,運行上面的代碼.自己看看結果吧.
          easy?

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

          評論

          # re: axis入門之代碼篇(1) 2009-05-21 10:34 redcoatjk

          很可惜這一段寫的有點亂了  回復  更多評論   


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          <2009年5月>
          262728293012
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          導航

          統(tǒng)計

          公告

          2006年4月29號凌晨0點開通我的blog http://www.1001m.com

          常用鏈接

          留言簿(2)

          隨筆檔案

          文章分類

          文章檔案

          夢境家園

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 子长县| 米林县| 玛沁县| 岳阳市| 宜城市| 泗洪县| 本溪| 遂溪县| 策勒县| 宁陕县| 襄垣县| 上高县| 盐边县| 阜新| 东丰县| 新余市| 监利县| 宜宾市| 崇阳县| 黄山市| 阜城县| 札达县| 龙口市| 湖北省| 阿尔山市| 杨浦区| 克山县| 龙胜| 株洲县| 兴和县| 屏东县| 华安县| 济源市| 罗平县| 衡山县| 海南省| 凉山| 确山县| 兰坪| 房产| 乌拉特后旗|