posts - 195, comments - 34, trackbacks - 0, articles - 1

          zz視頻總結-jndi

          Posted on 2009-03-24 10:22 小強摩羯座 閱讀(323) 評論(0)  編輯  收藏 所屬分類: Java
          視頻總結-jndi
          jndi:java命名和目錄接口
               jndi把object和context(還可以有subcontext)組織成一個jndi樹
          這樣object就可一被綁定到不同的context上面
          jndi是一種查找服務,用于查找:
              web應用環境變量
              EJB和他們的環境變量
              通過DataSource的數據庫連接池
              JMS沒有表和連接工廠
              其他服務
          不要將jndi當做數據庫使用
              jndi對象存儲在內存中
              訪問jndi對象與網絡性能有關
          jndi樹:
          InitialContext是JNDI樹所有搜索的起點
          對象綁定到jndi樹上,java對象是樹葉,context是節點
          一個綁定把對象與一個邏輯名和一個context關聯起來
          創建Initial Context
          從服務器端對象連接到jndi
          //創建一個InitialContext
          context ctx=new InitialContext();//鏈接到當前的jndi樹上
          從任何一個地方連接到jndi
            .創建Environment對象
             weblogic.jndi.Enviroment env=new Weblogix.jndi.Enviroment();
             填寫Enviroment
             env.setProviderurl("t3://127.0.0.1:7001");//weblogic server的位置
             env.setSecurityPrincipal("system");//安全信息
             env.setSecurityCredentiais("password");
             //使用Environment對象創建InitialContext
             context ctx=env.getInitialContext();
            .hashtable的用法....
          創建subcontext
            創建一個用于綁定對象的subcontext
            創建Environment對象
            context ctx=env.getInitialContext();//首先獲得已經存在的subcontext或者initialcontext
            填寫Environment
            context subcontext=ctx.createSubcontext("newSubcontext");
            subcontext.rebind("boundobject",object);
            subcontext.close();
            ctx.close();
          其他鏈接到jndi的方法:
           
          使用ConstantProperties名和hashtable類:
           HashTable env=new HashTable();
           env.put(Context.initial_context_factory,"weblogic.jndi.WLInitialContextFactory");
           env.put(Context.procider_url,"t3://localhost:7001");
           env.put(Context.security_principal,"system");
           env.put(Context.crrdentials,"password");
           Context ctx=new InitialContext(env);
          另一個例子:使用hardcoded名和properties類
           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","system");
           env.setProperties("java.naming.security.credentials","password");
           Context ctx=new InitialContext(env);
          jndi.properties
          .jndi.properties文件為所有的Initial Contexts設置默認的屬性
          .jndi.properties文件的搜索順序
              .classpath
              .$JAVA_HOME/lib
          實例:
           java.naming.factoyr.initial=weblogic.jndi.WLInitialContextFactory
           java.naming.security.url=t3://localhost:7001
           java.naming.security.pricipal=system
           java.naming.security.credentials=password
           使用默認值:
           Context ctx=new InitialContext();
          從jndi查找:
          .lookup()從jndi樹獲得對象
          .通過lookup()返回的對象必須映射到他們合適的類型
          try{
          //先獲得InitialContext
          //Context ic=new Context();
          Object obj;
          obj=ic.lookup("javax.transation.UserTransaction");
          UserTransaction ut=(UserTransaction)obj;
          ut.begin();
          .....
          ic.close();
          }catch(NamingEcxeption e){....}
          遠程綁定對象:
          .遠程綁定到遠程命名服務的對象必須是序列化的
          .訪問命名服務時,對象是采用復制機制
          查找的對象是序列化到客戶端的
          一個binding實例:
          public static Context getInitialContext()throws NamingException{
             創建Environment對象
             weblogic.jndi.Environment env=new Weblogix.jndi.Environment();
             填寫Enviroment
             env.setProviderurl("t3://127.0.0.1:7001");//weblogic server的位置
             env.setSecurityPrincipal("system");//安全信息
             env.setSecurityCredentiais("password");
             //使用Environment對象創建InitialContext
             context ctx=env.getInitialContext();
             return ctx;
          }
          //獲得Initial Context
          Context ctx=getInitialContext();
          //創建名為band的對象
          Bank myBank=new Bank();
          //把對象綁定到jndi樹
          ctx.rebind("theBank",myBank);
          ctx.close();



          主站蜘蛛池模板: 礼泉县| 惠东县| 峡江县| 扶沟县| 谷城县| 延吉市| 星座| 邛崃市| 体育| 宁安市| 南雄市| 饶阳县| 扎赉特旗| 遂川县| 武宁县| 铅山县| 樟树市| 长宁区| 旌德县| 林甸县| 法库县| 元朗区| 通江县| 马鞍山市| 建瓯市| 天镇县| 峨眉山市| 南昌县| 图木舒克市| 蒲城县| 武宣县| 高清| 佛山市| 碌曲县| 瓦房店市| 西充县| 革吉县| 河西区| 垣曲县| 青田县| 平阴县|