1 package cz.frantovo.sql.vyuka.dao;
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;
16 public class VyukaSuperDAO extends SuperDAO {
18 protected Context kontext = null;
20 protected enum DATABAZE {
22 /** Databáze aplikace – historie, nastavení. */
24 /** Databáze, na které se spouštějí příkazy uživatelů. */
28 public VyukaSuperDAO() {
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);
42 * @param databaze Která databáze (aplikace = historie a nastavení | pískoviště = příkazy uživatele)
43 * @return Databázové spojení
45 protected Connection getSpojeni(DATABAZE databaze) {
46 if (databaze == null) {
47 databaze = DATABAZE.PISKOVISTE;
49 String jndi = orizni(getVlastnost(databaze, VyukaSuperDAO.class));
50 DataSource zdroj = null;
52 zdroj = (DataSource) kontext.lookup(jndi);
53 return zdroj.getConnection();
54 } catch (NamingException ex) {
55 log.log(Level.SEVERE, "getSpojeni: lookup", ex);
57 } catch (SQLException ex) {
58 log.log(Level.SEVERE, "getSpojeni: sql", ex);