亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 第二章 定位lookup service.htm

?? 分多章節詳細介紹了Jini技術及相關開發環境
?? HTM
字號:
<html>

<head>
<title>新時代軟件教程:操作系統 主頁制作 服務器 設計軟件 網絡技術 編程語言 文字編輯</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style>
<!--
body, table {font-size: 9pt; font-family: 宋體}
a {text-decoration:none}
a:hover {color: red;text-decoration:underline}
.1  {background-color: rgb(245,245,245)}
-->
</style>
</head>
<p align="center"><script src="../../1.js"></script></a>
    <p align="center"><big><strong>第二章 定位Lookup Service</strong></big></p>


<p>客戶通過查詢某個Lookup Service來定位服務。為了實現這一點,首先必須找到lookup 
      service。另一方面,一個服務要在lookup service上注冊,首先也要找到lookup 
      service。所以客戶和服務的第一步都是要查找lookup service。查找lookup service有兩種方法: 
      unicast(唯一)和broadcast(廣播). 
      <P>1、一對一查找(Unicast discovery)<BR>當你已經知道了lookup 
      service所在的機器,就可以用一對一的查找。一般用在你知道lookup 
      service的準確地址。編程使用包net.jini.core.discovery中的類LookupLocator ,它有兩個構造函數如下: 
<PRE><CODE>
package net.jini.core.discovery;
public Class LookupLocator {
    LookupLocator(java.lang.String url)
                  throws java.net.MalformedURLException;
    LookupLocator(java.lang.String host,int port);
}
</CODE></PRE>第一個構造函數中的URL必須是這種形式的 "jini://host/" 或者 
      "jini://host:port/"。如果不指定端口號(port),缺省端口是4160。下面的程序有一些有效或無效的host/URLs生成對象。 
<PRE><CODE>

import net.jini.core.discovery.LookupLocator;
/** 
* InvalidLookupLocator.java * *
    * Created: Tue Mar  9 14:14:06 1999
* @author Jan Newmarch 
* @version
    */

public class InvalidLookupLocator  { 
   
   static public void main(String argv[]) {
	        new InvalidLookupLocator();    
    }   

   public InvalidLookupLocator() {
	       LookupLocator lookup;	// this is valid	
       try {
	        lookup = new LookupLocator("jini://localhost");
	        System.out.println("First lookup creation succeeded");
	       } catch(java.net.MalformedURLException e) {
	        System.err.println("First lookup failed: " + e.toString());	}

	// this is probably an invalid URL, 	
// but the URL is syntactically okay	
  try {
	    lookup = new LookupLocator("jini://ABCDEFG.org");
	    System.out.println("Second lookup creation succeeded");
	} catch(java.net.MalformedURLException e) {
	    System.err.println("Second lookup failed: " + e.toString());	}
	
// this IS a malformed URL	
try {
	    lookup = new LookupLocator("A:B:C://ABCDEFG.org");
	    System.out.println("Third lookup creation succeeded");
	} catch(java.net.MalformedURLException e) {
	    System.err.println("Third lookup failed: " + e.toString());	}
	
// this is valid	
lookup = new LookupLocator("localhost", 80);
	System.out.println("Fourth lookup creation succeeded"); 
   }    
} // InvalidLookupLocator
</CODE></PRE>查找是通過類LookupLocator的方法getRegistrar()來實現的,該方法返回類 
      ServiceRegistrar的一個對象實例。 
<PRE><CODE>
  public ServiceRegistrar getRegistrar()
                              throws java.io.IOException,
                                     java.lang.ClassNotFoundException
   程序實例如下:

import net.jini.core.discovery.LookupLocator;
import net.jini.core.lookup.ServiceRegistrar;
/**
*UnicastRegistrar.java 
* *
*Created: Fri Mar 12 22:34:53 1999 
* 
*@author Jan Newmarch 
*@version 
*/

public class UnicastRegistrar  {
     static public void main(String argv[]) 
      {
        new UnicastRegistrar();    }  
     
     public UnicastRegistrar() {
    
  	   LookupLocator lookup = null;
       ServiceRegistrar registrar = null;        
      try {
            lookup = new LookupLocator("jini://localhost");
        } catch(java.net.MalformedURLException e) {
            System.err.println("Lookup failed: " + e.toString());
	    System.exit(1);        
      }	
     
     try {	    registrar = lookup.getRegistrar();
	    } catch (java.io.IOException e) {
            System.err.println("Registrar search failed: " + e.toString());
	        System.exit(1);	
       } catch (java.lang.ClassNotFoundException e) {
            System.err.println("Registrar search failed: " + e.toString());
	       System.exit(1);	}
	// the code takes separate routes from here for client or service    }   
} // UnicastRegistrar
</CODE></PRE>
      <P>2、廣播式查找(Broadcast discovery)<BR>如果lookup 
      service的位置不知道,那就要用廣播式查找了。我們要使用在包net.jini.discovery 中的類LookupDiscovery 
      。它只有一個構造函數如下: 
<PRE><CODE>     
     LookupDiscovery(java.lang.String[] groups)
</CODE></PRE>該構造函數的參數可以有三種不同的 情況:<BR>l、 
      null或LookupDiscovery.ALL_GROUPS,表示要找到所有可找到的lookup 
      service。<BR>2、一個空串或LookupDiscovery.NO_GROUPS,表示建立了對象,但是沒有執行查找。在這種情況下,為了執行查找需要調用方法setGroups()。<BR>3、一個非空的字符串,這樣就只查找該組的Lookup 
      Service.<BR>
      <P>2.1 DiscoveryListener<BR>廣播式查找是在網上全面搜索,網上能收到信息的Lookup 
      Service都應該響應請求。這種查找是很費時間的,因為一般不知道能響應的lookup service的數目。為了處理這種不確定性,對象 
      LookupDiscovery可以注冊一個監聽器來監聽響應信息。 
<PRE><CODE>
   public void addDiscoveryListener(DiscoveryListener l)

該監聽器必須實現接口DiscoveryListener
     package net.jini.discovery;public 
     abstract interface DiscoveryListener {
        public void discovered(DiscoveryEvent e);
        public void discarded(DiscoveryEvent e);
     }
	 </CODE></PRE>不論什么時候,lookup 
      service一被發現就調用方法discovered()。API建議該方法應該立刻返回,不要做任何遠程調用。 
      而且對于服務方它可以很方便的注冊服務,而客戶也可以用它很方便的查找可用的服務,并調用該服務。該操作最好用一個單獨的線程來執行。其他問題包括:DiscoveryListener一建立,廣播就開始了。然后一個監聽器就加入該discovery對象中。如果在listener加入之前,有了響應會發生什么情況?規范保證這些響應會被存起來不會丟失。相反,如果長時間沒有響應來怎么辦?這不能簡單的退出, 
      只能等到有響應才行。處理方法只一,如果應用有GUI界面,可以由用戶停止;另一種方法是sleep 1000秒。當lookup 
      service放棄時,調用方法discarded()。 
      <P>2.2 DiscoveryEvent<BR>方法discover()的參數是DiscoveryEvent對象。 
<PRE><CODE>
package net.jini.discovery;

public Class DiscoveryEvent {
    public net.jini.core.lookup.ServiceRegistrar[] getRegistrars();
}
</CODE></PRE>它有一個公共方法getRegistrars(),該方法返回ServiceRegistrar對象數組。程序實例如下: <PRE><CODE>
import net.jini.discovery.LookupDiscovery;
import net.jini.discovery.DiscoveryListener;
import net.jini.discovery.DiscoveryEvent;
import net.jini.core.lookup.ServiceRegistrar;
/** * MulticastRegistrar.java * *
*Created: Fri Mar 12 22:49:33 1999
* @author Jan Newmarch 
* @version 
*/
public class MulticastRegistrar implements DiscoveryListener { 
static public void main(String argv[]) {
        new MulticastRegistrar();
}

public MulticastRegistrar() {
        LookupDiscovery discover = null;
        try {
            discover = new LookupDiscovery(LookupDiscovery.ALL_GROUPS);
        } catch(Exception e) {
            System.err.println(e.toString());
	    System.exit(1);
        } 
       discover.addDiscoveryListener(this);
	// stay around long enough to receive replies
	try {
	    Thread.currentThread().sleep(1000000L);
	} catch(java.lang.InterruptedException e) {
	    // do nothing	
      }  
   }    
    
public void discovered(DiscoveryEvent evt) {
        ServiceRegistrar[] registrars = evt.getRegistrars();
        for (int n = 0; n &lt; registrars.length; n++) {
	    ServiceRegistrar registrar = registrars[n];
	    // the code takes separate routes from here for client or service  	} 
   }

public void discarded(DiscoveryEvent evt) {    }
}// MulticastRegistrar
</CODE></PRE>
      <P>3、ServiceRegistrar<BR>ServiceRegistrar是一個被每一個lookup 
      service實現的抽象類。該類實際實現的細節和這沒有關系。類ServiceRegistrar的作用是擔當lookup 
      service的代理。該代理運行在客戶或服務中。在Jini中,這是第一個從一個Java進程移到另一個進程中的對象。使用RMI,該對象被從lookup 
      service移到找到該lookup 
      service的應用中。從那時起,它就做為應用地址空間中的一個對象運行,同時該應用對它進行正常的方法調用。當需要的時候,它可以和它的lookup 
      service通信,但是這種通信不需要應用顯式的調用RMI方法。該對象有兩個主要的方法,其中一個是服務用來注冊的: 
<PRE><CODE>public ServiceRegistration register(ServiceItem item,
                                    long leaseDuration)
                             throws java.rmi.RemoteException
</CODE></PRE>另一個是客戶用來定位某個特定的服務: 
<PRE><CODE>public java.lang.Object lookup(ServiceTemplate tmpl)
                        throws java.rmi.RemoteException;
public ServiceMatches lookup(ServiceTemplate tmpl,
                             int maxMatches)
                      throws java.rmi.RemoteException;
</CODE></PRE>一個服務要注冊一個對象(就是一個類的實例),和該對象的屬性集合。例如,打印機可以指定能否處理Postscript文檔。服務可以注冊本身,或注冊一個實現其行為的代理。注意:已注冊的對象可以通過RMI傳遞。最后當它運行時,可以離它開始建立的地方很遠。客戶使用所知道的一些服務特性來尋找服務。 

  </table>
<p align="center"><script src="../../2.js"></script></a>
</body>
</html>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲va欧美va天堂v国产综合| 日韩视频免费观看高清完整版| 麻豆极品一区二区三区| 亚洲一区二区在线播放相泽| 亚洲女子a中天字幕| 日韩理论电影院| 亚洲日本在线天堂| 亚洲电影激情视频网站| 日韩精品国产精品| 奇米影视在线99精品| 久久99久久精品| 国产剧情一区二区| 99视频精品在线| 91麻豆精东视频| 在线精品视频一区二区| 在线亚洲一区观看| 欧美日韩国产在线观看| 日韩视频国产视频| 国产精品视频线看| 天堂影院一区二区| 国产成人av一区二区三区在线| 久久av老司机精品网站导航| 99re这里只有精品视频首页| 中文字幕一区二区三区四区| 日韩久久一区二区| 亚洲超碰精品一区二区| 激情伊人五月天久久综合| 粉嫩高潮美女一区二区三区 | 国产成人午夜视频| 99久久精品一区| 欧美日韩电影一区| 久久精品这里都是精品| 亚洲欧美另类久久久精品| 丝袜国产日韩另类美女| 国产69精品久久777的优势| av不卡免费在线观看| 91精品国产乱| 亚洲人被黑人高潮完整版| 麻豆精品在线观看| eeuss鲁片一区二区三区| 欧美日韩国产高清一区| 国产日产精品一区| 日韩在线卡一卡二| 色综合视频在线观看| 日韩精品一区二区三区蜜臀 | 日韩女优视频免费观看| 1000精品久久久久久久久| 日本中文在线一区| 一本久久综合亚洲鲁鲁五月天 | 91视频精品在这里| 国产综合色产在线精品| 欧美一区午夜视频在线观看| 免费人成网站在线观看欧美高清| 亚洲一区在线视频| 亚洲国产电影在线观看| 日韩精品免费专区| 一本色道久久综合亚洲aⅴ蜜桃| 欧美大白屁股肥臀xxxxxx| 亚洲精品视频在线看| 国产成人三级在线观看| 精品国产第一区二区三区观看体验| 亚洲黄色性网站| 99国产精品久久久久久久久久久| 久久人人爽爽爽人久久久| 免费在线看成人av| 91精品中文字幕一区二区三区| 一区二区三区在线观看欧美| 成人av第一页| 国产精品免费视频观看| 国模套图日韩精品一区二区| 日韩女优电影在线观看| 日韩中文字幕91| 欧美美女一区二区在线观看| 香蕉av福利精品导航| 欧美日韩久久一区| 亚洲精品欧美综合四区| jizz一区二区| 亚洲天堂久久久久久久| 99国产精品国产精品毛片| 综合在线观看色| www.久久精品| 综合亚洲深深色噜噜狠狠网站| 99九九99九九九视频精品| 国产精品久线观看视频| av资源网一区| 亚洲综合另类小说| 欧美精选在线播放| 美女mm1313爽爽久久久蜜臀| 欧美成人一区二区三区在线观看| 激情综合色综合久久综合| 久久精子c满五个校花| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 国产人妖乱国产精品人妖| 国产成人精品一区二| 亚洲欧美日韩人成在线播放| 在线观看一区不卡| 久久超碰97中文字幕| 亚洲国产精品精华液ab| 色欧美片视频在线观看| 日韩av电影免费观看高清完整版 | 亚洲自拍与偷拍| 91精品国产免费久久综合| 老司机精品视频线观看86 | 成人av电影在线观看| 亚洲免费在线视频| 欧美一区永久视频免费观看| 国产盗摄一区二区| 亚洲不卡一区二区三区| 久久先锋影音av鲁色资源网| 波多野结衣在线一区| 人人狠狠综合久久亚洲| 欧美日韩国产首页| 亚洲精品视频一区| 欧美一区二区国产| 国产麻豆精品视频| 亚洲一区二区中文在线| 欧美tk丨vk视频| av在线不卡网| 国产综合色精品一区二区三区| 亚洲视频中文字幕| 欧美不卡一二三| 在线观看网站黄不卡| 国产资源在线一区| 亚洲成人在线免费| 国产精品不卡一区| 精品成人a区在线观看| 91浏览器入口在线观看| 国产在线精品一区二区| 亚洲午夜一区二区| 欧美极品少妇xxxxⅹ高跟鞋| 91精品综合久久久久久| 欧美性猛交xxxx黑人交| 成人免费观看av| 欧美狂野另类xxxxoooo| 国产精品1区2区| 久久精品在线观看| 国产精品视频一二| 北条麻妃一区二区三区| 精品一区二区三区免费观看| 亚洲综合激情小说| 中文字幕一区二区三区不卡 | 日韩写真欧美这视频| 精品粉嫩超白一线天av| 欧美日韩中文字幕一区二区| 99国产精品久| 亚洲 欧美综合在线网络| 欧美少妇一区二区| 精品美女被调教视频大全网站| 欧美一区二区不卡视频| 亚洲成人免费观看| 91蜜桃婷婷狠狠久久综合9色| 久久精品人人做| 日本vs亚洲vs韩国一区三区| 欧洲生活片亚洲生活在线观看| 欧美三区免费完整视频在线观看| 欧美二区乱c少妇| 亚洲乱码国产乱码精品精小说| 国内精品在线播放| 成人美女在线视频| 色播五月激情综合网| 欧美视频在线播放| 亚洲色图第一区| 成人精品免费网站| 国产亚洲欧美日韩俺去了| 粉嫩aⅴ一区二区三区四区五区| 国产欧美精品一区aⅴ影院 | 国产视频在线观看一区二区三区 | 欧美激情一区二区三区| 色偷偷久久一区二区三区| 一区二区三区91| 日韩欧美精品在线视频| 国产不卡免费视频| 亚洲一区二区欧美日韩| 日韩欧美亚洲国产精品字幕久久久| av爱爱亚洲一区| 一区二区三区精品| 精品欧美乱码久久久久久1区2区| 国产成人丝袜美腿| 性感美女极品91精品| 国产精品视频线看| 国产亚洲自拍一区| 欧美在线免费播放| 成人高清免费观看| 国产成人av电影免费在线观看| 亚洲自拍偷拍综合| 中文字幕日韩一区二区| 欧美变态tickle挠乳网站| 精品视频在线看| 国产麻豆欧美日韩一区| 日韩二区三区在线观看| 亚洲激情自拍偷拍| 亚洲另类在线一区| 欧美国产一区视频在线观看| 欧美精品一区二区三区视频| 欧美日韩国产电影| 欧美一区二区视频在线观看 | 日本精品一级二级| 国产精品一区二区久久精品爱涩 | 久久不见久久见中文字幕免费| 国产精品成人免费精品自在线观看|