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

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 三原县| 革吉县| 木兰县| 岱山县| 石台县| 饶河县| 巧家县| 民县| 鹤岗市| 永兴县| 临夏市| 江山市| 武夷山市| 柞水县| 东乡| 航空| 禄丰县| 赞皇县| 怀安县| 博乐市| 黔南| 普格县| 阳谷县| 肥东县| 宁晋县| 库尔勒市| 三台县| 东阳市| 米易县| 光泽县| 东辽县| 万山特区| 天长市| 普定县| 海门市| 阳谷县| 东安县| 微山县| 南澳县| 来宾市| 麻阳|