2009-03-09 17 views
1

"java:comp/env/jdbc/MY_SQL_DS"が機能しません。私は命名例外:NameNotFoundExceptionを取得します。いずれも "MY_SQL_DS" alone.name例外を再度処理しません。"java:comp/env/jdbc/MY_SQL_DS"または "MY_SQL_DS"またはJava内からDataSourceを参照するその他の情報

私が参照する規則は何か...

をメールセッションの名前の「MY_MailSession」のための別のJNDIを作成し、作品(のjavax.mail.Session)ctx.lookup(「MY_MailSession」)のようにそれを参照しますJDBC DataSource?

答えて

0

は、私はそれを次のように解決:これは他の人が後で同じ問題/問題を持つことができます 希望を...

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); 
      } 
     } 
関連する問題