java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/VyukaSuperDAO.java
author František Kučera <franta-hg@frantovo.cz>
Mon Nov 09 18:57:24 2020 +0100 (2020-11-09)
changeset 86 a51bbc91a4cb
parent 33 36359b154a6a
permissions -rw-r--r--
zprovoznění v aplikačním serveru Tomcat / TomEE
     1 package cz.frantovo.sql.vyuka.dao;
     2 
     3 import cz.frantovo.superDAO.SuperDAO;
     4 import java.sql.Connection;
     5 import java.sql.SQLException;
     6 import java.util.logging.Level;
     7 import javax.naming.Context;
     8 import javax.naming.InitialContext;
     9 import javax.naming.NamingException;
    10 import javax.sql.DataSource;
    11 
    12 /**
    13  *
    14  * @author fiki
    15  */
    16 public class VyukaSuperDAO extends SuperDAO {
    17 
    18     protected Context kontext = null;
    19 
    20     protected enum DATABAZE {
    21 
    22         /** Databáze aplikace – historie, nastavení. */
    23         APLIKACE,
    24         /** Databáze, na které se spouštějí příkazy uživatelů. */
    25         PISKOVISTE
    26     }
    27 
    28     public VyukaSuperDAO() {
    29         try {
    30             // v GlassFishi stačil InitialContext
    31             // v Tomcatu / TomEE nešlo v InitialContextu DB spojení najít:
    32             // javax.naming.NameNotFoundException: Name [jdbc/sqlVyuka/aplikace] is not bound in this Context. Unable to find [jdbc].)
    33             // Po přidání lookup("java:comp/env") funguje v TomEE.
    34             kontext = new InitialContext();
    35             kontext = (Context) kontext.lookup("java:comp/env"); 
    36         } catch (NamingException ex) {
    37             log.log(Level.SEVERE, "Chyba při inicializaci kontextu", ex);
    38         }
    39     }
    40 
    41     /**
    42      * @param databaze Která databáze (aplikace = historie a nastavení | pískoviště = příkazy uživatele)
    43      * @return Databázové spojení
    44      */
    45     protected Connection getSpojeni(DATABAZE databaze) {
    46         if (databaze == null) {
    47             databaze = DATABAZE.PISKOVISTE;
    48         }
    49         String jndi = orizni(getVlastnost(databaze, VyukaSuperDAO.class));
    50         DataSource zdroj = null;
    51         try {
    52             zdroj = (DataSource) kontext.lookup(jndi);
    53             return zdroj.getConnection();
    54         } catch (NamingException ex) {
    55             log.log(Level.SEVERE, "getSpojeni: lookup", ex);
    56             return null;
    57         } catch (SQLException ex) {
    58             log.log(Level.SEVERE, "getSpojeni: sql", ex);
    59             return null;
    60         }
    61     }
    62 }