posts - 56, comments - 54, trackbacks - 0, articles - 4
             ::  ::  :: 聯系 :: 聚合  :: 管理

          WebLogic JNDI 使用方法簡介

          Posted on 2005-11-16 10:37 Terry的Blog 閱讀(5039) 評論(1)  編輯  收藏 所屬分類: Java應用服務器

          WebLogic JNDI 使用方法簡介
           
          參考資料
          1: http://www.weblogic.com/docs/classdocs/API_jndi.html
          2: BeaHOME\wlserver6.1\samples\examples\jndi

          public static void main(String[] args) {
              // Use weblogic test JNDI
              // project include BeaHOME\wlserver6.1\lib\weblogic.jar
              String bindingkey = "UserAccount";
              Context initialContext = null;
              try {
                  // 1 Create a Properties object and set properties appropriately
                  Properties props = new Properties();
                  // Take a look at BeaHOME\wlserver6.1\samples\examples\jndi
                  // 1.1
                  props.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
                  // 1.2   
                  props.put(Context.PROVIDER_URL, "t3://localhost:7001");

                  // 2 Create the initial context from the properties we just created
                  initialContext = new InitialContext(props);

                  HashMap lst = new HashMap();
                  lst.put("enterprise_code", "600000");
                  lst.put("username", "S02888");
                  lst.put("password", "sysmex");

                  // Sometimes bind twice will cause NamingException  
                  //initialContext.unbind(bindingkey);
                  try {
                      // binding is copy obj's value to server
                      initialContext.bind(bindingkey, lst);
                  } catch (NameAlreadyBoundException e) {
                      initialContext.rebind(bindingkey, lst);
                  }

                  // Look up the object. copy obj's value from server
                  Object obj = initialContext.lookup(bindingkey);

                  if (bindingkey.equals("")) {
                      System.out.println("Looked up the initial context");
                  } else {
                      System.out.println(bindingkey + " is bound to: " + obj);
                  }
              } catch (NamingException e) {
                  System.out.println("NamingException msg = " + e.getMessage());
              } finally {
                  if (initialContext != null) {
                      try {
                          initialContext.close();
                      } catch (NamingException e) {
                          System.out.println("Failed to close context due to: " + e);
                      }
                  }
              }
          }
           
          用ACLs限制JNDI訪問
           
              給JNDI的訪問加入權限限制.

              1: 在 http://localhost:7001/console/ 中設置
              Security--->ACLs   Create a new ACL...
              Name=weblogic.jndi.myapp  // 這個myapp就是要限制的JNDI路徑.
              Permissions=lookup (first time)
              Permissions=modify (secend time)
              User=user1
               if there is a error system has not "modify" permission
               please add one line in filerealm.properties
               acl.modify.weblogic.admin=Administrators


              2: 代碼中訪問JNDI是要輸入用戶名 密碼

              static final String JNDI_PATH = "myapp";

              public void bindUserData(
                  String sessid,
                  String enterpriseCode,
                  String userId,
                  String password) {

                  // Use weblogic test JNDI
                  // project include BeaHOME\wlserver6.1\lib\weblogic.jar
                  String bindingkey = sessid;
                  Context initialContext = null;
                  try {
                      // 1 Create a Properties object and set properties appropriately
                      Properties props = new Properties();
                      // Take a look at BeaHOME\wlserver6.1\samples\examples\jndi
                      props.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
                      props.put(Context.PROVIDER_URL, "t3://localhost:7001");
                      // ユーザおよびパスワードを T3User にパッケージ化して、
                      // パスワードを確実に暗號化する
                      props.put(Context.SECURITY_CREDENTIALS, new T3User("user1", "psw1")); 
                     
                      // 2 Create the initial context from the properties we just created
                      initialContext = new InitialContext(props);

                      HashMap lst = new HashMap();
                      //lst.put("enterprise_code", "600000");
                      //lst.put("username", "S02888");
                      //lst.put("password", "sysmex");

                      lst.put("enterprise_code", enterpriseCode);
                      lst.put("username", userId);
                      lst.put("password", password);

                      try {
                          initialContext.createSubcontext(JNDI_PATH);
                          System.out.println("Subcontext 'myapp' created");
                      } catch (NameAlreadyBoundException e) {
                          // サブコンテキストがすでに存在している。
                          // 名前が同じオブジェクトにすでにバインドされている場合、
                          // WebLogic のコンテキストの実裝で、この例外は送出されない。
                          System.out.println("Subcontext 'myapp' already exists;" + " continuing with existing subcontext");
                      }

                      initialContext.unbind(JNDI_PATH + "." + bindingkey);
                      // bind is copy obj's value to server
                      initialContext.bind(JNDI_PATH + "." + bindingkey, lst);

                      // Look up the object. copy obj's value from server
                      Object obj = initialContext.lookup(JNDI_PATH + "." + bindingkey);

                      if (bindingkey.equals("")) {
                          System.out.println("Looked up the initial context");
                      } else {
                          System.out.println(
                              JNDI_PATH + "." + bindingkey + " is bound to: " + obj);
                      }

                  } catch (NamingException e) {
                      System.out.println("NamingException msg = " + e.getMessage());
                  } finally {
                      if (initialContext != null) {
                          try {
                              initialContext.close();
                          } catch (NamingException e) {
                              System.out.println("Failed to close context due to: " + e);
                          }
                      }
                  }
              }

          // 補充:遍歷所有元素
          NamingEnumeration ne = initialContext.list("."); // 用句號表示根目錄
          while (ne.hasMoreElements()){
              System.out.println(ne.next());  
          }
           
           


          評論

          # re: WebLogic JNDI 使用方法簡介  回復  更多評論   

          2011-04-26 11:54 by zcq87642231
          このやろう。 それは日本に向けのプロージェックトじゃん。
          主站蜘蛛池模板: 广宁县| 库尔勒市| 蓬溪县| 宜丰县| 高青县| 毕节市| 库尔勒市| 大丰市| 仪征市| 福鼎市| 云浮市| 建阳市| 灌云县| 南康市| 内丘县| 新宾| 鹿邑县| 景宁| 个旧市| 安福县| 大足县| 顺平县| 临湘市| 南涧| 宜兴市| 盐亭县| 紫阳县| 深泽县| 临清市| 桐梓县| 黄大仙区| 靖西县| 武穴市| 工布江达县| 宝清县| 平乐县| 普定县| 九龙城区| 芷江| 眉山市| 韶关市|