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

          import java.net.URL;

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

          /**
           * 單獨(dú)JAX-RPC客戶代碼實(shí)例。
           * 它使用了動(dòng)態(tài)代理方法,以獲得對(duì)遠(yuǎn)程WEB服務(wù)的引用。
           *
           
          */

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

          }

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

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          關(guān)注blogs

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 东宁县| 婺源县| 双流县| 鄂尔多斯市| 梁河县| 湖州市| 甘洛县| 时尚| 怀柔区| 汶川县| 长兴县| 闻喜县| 迭部县| 黄平县| 武隆县| 上高县| 林口县| 苗栗市| 通江县| 寻乌县| 张家川| 沂水县| 盐城市| 凯里市| 南昌市| 奉节县| 西安市| 遵化市| 长岛县| 桂平市| 化隆| 庆阳市| 双辽市| 太和县| 大渡口区| 碌曲县| 贵南县| 云梦县| 龙门县| 宁乡县| 东阿县|