qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          Java實現webservice實例

          http://yangjizhong.iteye.com/blog/579511
           

          今天下午突然想研究下WEBSERVICE,從網上找了好多實例,但很多寫的讓人實在難以恭維,花了三個小時的圈圈轉后總算搞通了,其實也挺簡單的,這里特別感謝http://www.liuzm.com/article/java/992.htm這篇文章,總算讓我弄明白了,現在貼出我的實例步驟,感謝那個博主的同時,與大家共同分享。
            一:首先創建個WEB工程,然后: http://ws.Apache.org/axis/網站下載Axis安裝包.當然還依賴其他包的,我這里在附件里上傳了所有應用到得包,方便大家。
            二:然后就寫wsdd 文件(注:其實這里真的不用,可以跳過第二步)為了生成這個文件:server-config.wsdd
          deploy.wsdd:
          <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="" target="_blank">http://xml.apache.org/axis/wsdd/providers/java">
          <service name="HelloWorld" provider="java:RPC">
          <parameter name="className" value="HelloWorld"/>
          <parameter name="allowedMethods" value="sayHello"/>
          </service>
          </deployment>
            在DOS下轉換目錄到%TOMCAT_HOME%\webapps\axis\WEB-INF,命令:
            java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient deploy.wsdd
            三:可以自己寫第二步中的文件,代碼如下:
          <?xml version="1.0" encoding="UTF-8"?>
          <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
          <globalConfiguration>
          <parameter name="sendMultiRefs" value="true"/>
          <parameter name="disablePrettyXML" value="true"/>
          <parameter name="dotNetSoapEncFix" value="true"/>
          <parameter name="enableNamespacePrefixOptimization" value="false"/>
          <parameter name="sendXMLDeclaration" value="true"/>
          <parameter name="sendXsiTypes" value="true"/>
          <parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl"/>
          </globalConfiguration>
          <handler type="java:org.apache.axis.handlers.http.URLMapper" name="URLMapper"/>
          <service name="Login.jws" provider="java:RPC">
          <parameter name="className" value="server.SayHello"/>
          <parameter name="scope" value="request"/>
          <parameter name="allowedMethods" value="*"/>
          <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
          </service>
          <transport name="http">
          <requestFlow>
          <handler type="URLMapper"/>
          </requestFlow>
          </transport>
          </deployment>


           放到 WEB-INF 目錄下 和web.xml一起,其中,WEB.XML可以直接從你下載的axis項目中拿來到自己工程就好,或者自己添加:
          <servlet>
          <servlet-name>AxisServlet</servlet-name>
          <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
          </servlet>
          <servlet-mapping>
          <servlet-name>AxisServlet</servlet-name>
          <url-pattern>/services/*</url-pattern>
          </servlet-mapping>
            四:服務端提供的方法:
          package server;
          public class SayHello {
          public String getName(String name) {
          return "hello====>" + name;
          }
          }
            五:客戶端訪問服務端接口獲得數據的方法:
          package client;
          import org.apache.axis.client.Call;
          import org.apache.axis.client.Service;
          public class TestClient {
          public static void main(String[] args) throws Exception {
          // 指出service所在URL
          String endpoint = "http://127.0.0.1:8082/webservice/services/Login.jws";
          // 創建一個服務(service)調用(call)
          Service service = new Service();
          Call call = (Call) service.createCall();// 通過service創建call對象
          // 設置service所在URL
          call.setTargetEndpointAddress(new java.net.URL(endpoint));
          // 方法名(processService)與MyService.java方法名保持一致
          call.setOperationName("getName");
          // Object 數組封裝了參數,參數為"This is Test!",調用processService(String arg)
          String ret = (String) call.invoke(new Object[] { "繼中" });
          System.out.println(ret);
          }
          }
            六:啟動tomcat,先訪問http://127.0.0.1:8082/webservice/services,看是否有方法顯示,有顯示,則代表服務端提供的接口可以成功訪問了。
            我的效果是這樣:
          And now... Some Services
          Login.jws (wsdl)
          getName
            七:然后在本地跑客戶端TestClient,就應該有結果啦,大家試試吧。

          posted on 2014-02-12 11:39 順其自然EVO 閱讀(323) 評論(0)  編輯  收藏


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


          網站導航:
           
          <2014年2月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          2324252627281
          2345678

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 上杭县| 遵义市| 自贡市| 云阳县| 乌兰浩特市| 四平市| 永善县| 杨浦区| 福州市| 南乐县| 武隆县| 望谟县| 滕州市| 丰顺县| 凤冈县| 莱阳市| 南皮县| 泸州市| 巴彦县| 宁安市| 德昌县| 临邑县| 锡林郭勒盟| 巩留县| 邵东县| 盖州市| 宜昌市| 娱乐| 肇州县| 远安县| 玉林市| 通化市| 济南市| 连州市| 泸溪县| 五家渠市| 宜阳县| 福清市| 高邑县| 阿克苏市| 天水市|