2009-03-09 14 views
1

"java: comp/env/jdbc/MY_SQL_DS" çalışmıyor. Adlandırma Özel Durum: NameNotFoundException alıyorum. hiçbir zaman "MY_SQL_DS" tek başına çalışır. "java: comp/env/jdbc/MY_SQL_DS" ya da "MY_SQL_DS" ya da Java içinden DataSource'a referans vermek için başka ne var?

ben "MY_MailSession" adlı bir posta Oturum için başka JNDI oluşturulan ve başvurmak için kongre ne işleri (javax.mail.Session) ctx.lookup ("MY_MailSession") ...

gibi ona başvuru JDBC DataSource sonra?

cevap

0

ben o şu şekilde çözülür: Bu diğerleri sonradan aynı sorun/sorunu yaşıyor yardımcı umut ...

protected Connection getConnection() { 
      try { 
       if (connection == null || connection.isClosed()) { 
        if (dataSource == null) { 
         // impliziter Initial Context von WebLogic ApplicationServer Environment 
         java.util.Hashtable environment = new java.util.Hashtable(); 
         environment.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory"); 
         Context wlsic = new InitialContext(environment); 
         showJndiContext(wlsic, "", ""); 

         // logischer JNDI Rootcontext der Serverkomponente, kann mehrfach verwendet werden 
         Context ctx = (Context) wlsic.lookup("java:comp/env"); 
         showJndiContext(ctx, "", ""); 

         // weiter mit Resourcenpfad 
         dataSource = (DataSource) ctx.lookup("MY_SQL_DS"); 
        } 
        connection = dataSource.getConnection(); 
       } 
      } 
      catch (NamingException ne) { 
       ne.printStackTrace(); 
       log.error(ne); 
      } 
      catch (SQLException sqlEx) { 
       sqlEx.printStackTrace(); 
       log.error(sqlEx.getMessage()); 
      } 
      return connection; 
     } 

     public static void showJndiContext(Context ctx, String name, String space) { 
      if (null == name) 
       name = ""; 
      if (null == space) 
       space = ""; 

      try { 
       NamingEnumeration en = ctx.list(name); 
       while (en.hasMoreElements()) { 
        String delim = (null != name && 0 < name.length()) ? "/" : ""; 
        NameClassPair nc = (NameClassPair) en.next(); 
        System.out.println(space + name + delim + nc); 
        if (40 > space.length()) 
         showJndiContext(ctx, nc.getName(), " " + space); 
       } 
      } 
      catch (javax.naming.NamingException ex) { 
       //System.out.println(ex); 
      } 
     } 
İlgili konular