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