<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    天空是藍色的

    做好軟件為中國 #gcc -c helloworld.c -o helloworld.o //編譯目標文件 #gcc helloworld.o -o helloworld //編譯成可執行exe #helloworld //運行exe
    數據加載中……
    [轉貼]JNDI簡介和簡單示例

    JNDI: The Java Naming and Directory Interface

     

    什么是JNDI

    The Java Naming and Directory Interface是訪問不同名字和目錄服務的統一API接口。

    不同的服務使用不同的名字格式。

    Java程序需要以相同的格式訪問數據庫,文件,目錄,對象和網絡。

     

    JNID有兩部分接口:應用程序接口和提供服務的接口。在應用程序中使用API來訪問名字或目錄服務,在一個新的服務中使用SPI來提供服務。

     

    JNDI結構

    名字服務(Naming Services

    名字服務提供一種方法,映射標識符到實體或對象。

    你需要知道的幾條基本條款:

    綁定:綁定是將一個不可分割的名字("原子"名字)與一個對象聯系起來。像DNS,我們用名字www.yahoo.comIP地址216.32.74.53聯系起來,一個文件對象用文件名afile.txt聯系起來。

    名字空間;名字空間包含一組名字,但名字空間內每個名字是唯一的。一個文件目錄就是一個簡單的名字空間,如目錄C:\temp,在這個目錄下,不能有兩個相同名字的文件,但是,不同目錄下的兩個文件可能有相同的名字。

    復合名字:復合名字是用名字空間構成的唯一名字,有一個或多個"原子"名字構成,取決于所在的名字空間。文件路徑就是一個復合名字,比如我們用C:\temp\myfile.txt,我們可以看到,這個名字由根目錄名(C:\),臨時目錄名(temp)和一個文件名(myfile.txt)構成,這3個名字復合起來表示一個唯一的名字。

    組合名字:組合名字能跨越多個名字空間。一個URL就是一個組合名字,如果你看見http://www.npu.edu/index.htm,你使用http服務連接到服務器,然后使用另一個名字空間/index.htm來訪問一個文件。

     

    目錄服務

    目錄服務提供一組分成等級的目錄對象,具有可搜索的能力。

    在目錄服務中存儲的對象可以是任何能用一組屬性描述的對象,每個對象都可通過一組屬性來描述該對象的能力。例如,一個Person對象可能有heighthair coloragesex等屬性。目錄服務還可提供根據要求來搜索的能力,如我們可以使用Personage屬性,搜索20-25歲間的Person對象,目錄服務將返回符合條件的Persion對象。這通常被稱作基于內容的搜索。

     

    在客戶端使用JNDI

    u       創建一個java.util.Hashtable或者java.util.Properties的實例。

    u       添加變量到HashtableProperties對象:

    naming server提供的JNDI class類名。

    包含aming server位置的URL

    安全信任書。

    u       通過HashtableProperitesjndi屬性文件創建一個InitialContext對象。

     

    示例:

    import java.util.*;

    import javax.naming.*;

    env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");

    env.put(Context.PROVIDER_URL,"t3://localhost:7001");

    InitialContext ctx = new InitialContext(env);

     

    環境變量

    相應的常量

    說明

    java.naming.factory.initial

    Context.INITIAL_CONTEXT_FACTORY

    Context Factory

    類名,由服務提供商給出。

    java.naming.provider.url

    Context.PROVIDE_URL

    初始化地址。

    java.naming.security.

    principal

    Context.SECURITY_PRINCIPAL

    服務使用者信息。

    java.naming.security.

    credentials

    Context.SECURITY_CREDENTIAL

    口令。

     

    更多的配置示例:

    Hashtable env = new Hashtable();

    env.put (Context.INITIAL_CONTEXT_FACTORY,

    "weblogic.jndi.WLInitialContextFactory");

    env.put(Context.PROVIDER_URL, "t3://localhost:7001");

    env.put(Context.SECURITY_PRINCIPAL, "system");

    env.put(Context.SECURITY_CREDENTIALS, "password here");

     

    Properties env = new Properties();

    env.setProperties ("java.naming.factory.initial",

    "weblogic.jndi.WLInitialContextFactory");

    env.setProperties("java.naming.provider.url" , "t3://localhost:7001");

    env.setProperties("java.naming.security.principal" , "tommy");

    env.setProperties("java.naming.security.credentials" ,"password here");

     

    創建InitialContext

    Class Name: javax.naming.InitialContext

    Interfaces that it 
    implements: javax.naming.Context

    Constructors:

        
    public InitialContext();

        
    public InitialContext(Hashtable configuration);

        
    public InitialContext(Properties configuration);
     

    以上所有方法都可能拋出NamingException

     

    一個Binding示例:

    public static InitialContext getInitialContext() throws NamingException {

        Hashtable env 
    = new Hashtable();

        env.put(Context.INITIAL_CONTEXT_FACTORY,

             
    "weblogic.jndi.WLInitialContextFactory");

        env.put(Context.PROVIDER_URL,
    "t3://localhost:7001");

        InitialContext context 
    = new InitialContext(env);

        
    return context;

    }


    //Obtain the initial context

    InitialContext initialContext 
    = getInitialContext();

    //Create a Bank object.

    Bank myBank 
    = new Bank();

    //Bind the object into the JNDI tree.

    initialContext.rebind(
    "theBank",myBank);

     

    一個Lookup示例:

    public static InitialContext getInitialContext() throws NamingException {

        Hashtable env 
    = new Hashtable();

        env.put(Context.INITIAL_CONTEXT_FACTORY,

             
    "weblogic.jndi.WLInitialContextFactory");

        env.put(Context.PROVIDER_URL,
    "t3://localhost:7001");

        InitialContext context 
    = new InitialContext(env);

        
    return context;

    }


    //Obtain the initial context

    InitialContext initialContext 
    = getInitialContext();

    //Lookup an existing Bank object.

    Bank myBank 
    = (Bank) initialContext.lookup("theBank");

     

    可能發生的NamingException

    AuthenticationException

    CommunicationException

    InvalidNameException

    NameNotFoundException

    NoInitialContextException

     

    枚舉所有名字對象:

    NamingEnumeration Declaration:

    public interface NamingEnumeration extends Enumeration {

        
    public boolean hashMore() throws NamingException;

        
    public Object next() throws NamingException;

        
    public void close() throws NamingException; //jndi 1.2

    }


     

    try {

        …

        NamingEnumeration 
    enum = ctx.list("");

        
    while (enum.hasMore()) {

            NameClassPair ncp 
    = (NameClassPair) enum.next();

            System.out.println(
    "JNDI name is:" + ncp.getName());

        }


    }


    catch (NamingException e) {…}

     

    最后的示例:

     

    import java.util.*;

    import javax.naming.*;

    import javax.naming.directory.*;

    import java.io.*;

    public class ListAll {

        
    public static void main(java.lang.String[] args) {

            Hashtable env 
    = new Hashtable();

            env.put(Context.INITIAL_CONTEXT_FACTORY,

                
    "weblogic.jndi.WLInitialContextFactory");

            env.put(Context.PROVIDER_URL, 
    "t3://localhost:7001");

            
    try {

                InitialContext ctx 
    = new InitialContext(env);

                NamingEnumeration 
    enum = ctx.listBindings("");

                
    while(enum.hasMore()) {

                    Binding binding 
    = (Binding) enum.next();

                    Object obj 
    = (Object) binding.getObject();

                    System.out.println(obj);

                }


            }
     catch (NamingException e) {

            System.out.println(e);

            }


        }
     // end main

    }
     // end List

    http://blog.csdn.net/asklxf/archive/2004/07/04/33534.aspx

    posted on 2005-12-06 09:59 bluesky 閱讀(975) 評論(0)  編輯  收藏 所屬分類: 工作總結

    主站蜘蛛池模板: 综合亚洲伊人午夜网 | 亚洲人成网站色7799| 四虎影视成人永久免费观看视频| 久久99亚洲综合精品首页| 日日麻批免费40分钟无码| 亚洲一区二区三区在线观看网站 | 两个人看的www免费高清| 国产午夜亚洲不卡| **毛片免费观看久久精品| 国产精品亚洲片在线花蝴蝶| 久久久久亚洲Av片无码v| 99久久免费精品高清特色大片| 亚洲七久久之综合七久久| 亚洲AV永久纯肉无码精品动漫| 99久久国产免费-99久久国产免费| 朝桐光亚洲专区在线中文字幕| 四虎永久在线精品免费影视| 99久在线国内在线播放免费观看 | 亚洲精品色午夜无码专区日韩| 性短视频在线观看免费不卡流畅 | 亚洲一区二区三区久久| 亚洲午夜国产片在线观看| 二个人看的www免费视频| 亚洲中文字幕无码一去台湾| 亚洲精品国产美女久久久| 永久久久免费浮力影院| 99re免费99re在线视频手机版| 亚洲人成在线中文字幕| 日韩精品视频免费在线观看| 99视频有精品视频免费观看| 一级做受视频免费是看美女| 久久国产亚洲观看| 亚洲成?v人片天堂网无码| 国产一卡二卡3卡四卡免费| 国产精品亚洲片在线花蝴蝶| 亚洲影视自拍揄拍愉拍| 亚洲电影一区二区| 国产偷国产偷亚洲高清日韩 | a在线观看免费网址大全| 亚洲AV成人片无码网站| 91亚洲国产在人线播放午夜|