posts - 66,  comments - 11,  trackbacks - 0
          實現WEB服務客戶
          web服務是跨平臺的、跨語言的,所以WEB服務的客戶端使用的語言和平臺和他的服務端沒有必然的關系。比如我們可以在.Net下開發、部署web服務,然后在J2EE平臺下調用它,或者使用在J2EE平臺下開發、部署web服務,然后使用VB來調用它。
          在J2EE平臺中,WEB服務客戶同EJB客戶類似。如下兩種方式能夠訪問到WEB服務:
          1、不借助于JNDI查找,即使用單獨的JAX-RPC客戶訪問。
          2、借助于JNDI上下文訪問WEB服務的J2EE客戶
          第一種方法稱之為靜態存根,此時需要在客戶端預先生成SOAP客戶存根,這同RMI存根類似。第二種方法稱之為動態代理。它將在運行時獲得WSDL描述,然后創建動態代理。無論采用哪種方式訪問WEB服務,客戶都需要獲得服務Endpoint地址URL,否則單憑JNDI名是很難訪問到WEB服務的。
          package com.testproject.ejb.web;

          import java.net.URL;

          import javax.xml.namespace.QName;
          import javax.xml.rpc.Service;
          import javax.xml.rpc.ServiceFactory;

          /**
           * 單獨JAX-RPC客戶代碼實例。
           * 它使用了動態代理方法,以獲得對遠程WEB服務的引用。
           *
           
          */

          public class HelloClient {
              
          static String host = "localhost";
              
          //web服務的名字
              static String serviceURL = "HelloBean";
              
          //名稱空間
              static String nameSpaceUri = "urn:examples";
              
          static String serviceName = "HelloWorldWS";
              
          //web服務調用的地址
              static String serviceEndpointAddress = "http://"+host+":8000"+serviceURL;
              
          public static void main(String[] args)throws Exception{
                  HelloInterface hello 
          = null;
                  
          //動態代理方法
                  
          //1、指定WSDL文件的位置
                  URL url = new URL(serviceEndpointAddress+"?WSDL");
                  
          //2、創建服務工廠實例
                  ServiceFactory serviceFactory = ServiceFactory.newInstance();
                  
          //3、創建服務對象,以作為代理工廠
                  Service HelloService = serviceFactory.createService(url,new QName(nameSpaceUri,serviceName));
                  
          //4、獲得port引用
                  hello = (HelloInterface)HelloService.getPort(HelloInterface.class);
                  
          //調用hello()方法
                  System.out.println("Dynamic Proxy:"+hello.hello());
              }

          }

          posted on 2009-11-13 16:45 王永慶 閱讀(142) 評論(0)  編輯  收藏 所屬分類: EJB學習筆記
          <2009年11月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          關注blogs

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 瑞昌市| 六枝特区| 霞浦县| 沂源县| 化隆| 沙田区| 蓬安县| 吉林省| 名山县| 台南县| 无为县| 蒙阴县| 南投市| 库车县| 郸城县| 莱芜市| 大悟县| 淄博市| 徐汇区| 塔城市| 普定县| 五台县| 安龙县| 青川县| 赣榆县| 景东| 东兰县| 商河县| 泽普县| 台前县| 景宁| 咸丰县| 绥德县| 高平市| 马尔康县| 江城| 泰州市| 烟台市| 三台县| 潮安县| 金沙县|