Uso glassfish tengo configurado MySQL(localhost:4848) como
Recursos/JDBC/Conjunto de conexiones/MySQLPool
url: jdbc:mysql://:3306/java
Recursos/JDBC/Recurso JDBC/
Nombre JNDI: jdbc/java
Nombre de conjunto: MySQLPool
Hago un ping y me da correcto.
coneccion a la base de datos
Código:
private DataSource data;
private MusicaSQL sql = new MusicaSQL();
private DataSource getData() {
if (data == null) {
try {
Context ctx = new InitialContext();
data = (DataSource) ctx.lookup("jdbc/java");
} catch (NamingException ne) {
ne.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
return data;
}
public List<Musica> getAllMusica() {
Connection conn;
ArrayList<Musica> allMusica = new ArrayList<Musica>();
try{
conn = getData().getConnection();
PreparedStatement ps = conn.prepareStatement(sql.getSELECT_MUSICA_ALL());
ResultSet rs = ps.executeQuery();
while(rs.next()){
Musica musica = new Musica();
musica.setNombre(rs.getString("NOMBRE"));
musica.setArtista(rs.getString("ARTISTA"));
musica.setAlbum(rs.getString("ALBUM"));
musica.setGenero(rs.getString("GENERO"));
musica.setDuracion(rs.getInt("DURACION"));
musica.setAnio(rs.getInt("ANIO"));
musica.setIdmusica(rs.getInt("ID_MUSICA"));
allMusica.add(musica);
}
rs.close();
ps.close();
conn.close();
}catch(SQLException e){
System.out.println(e.getMessage());
}
return allMusica;
}
MusicaSQL
Código:
private static final String INSERT_MUSICA = "INSERT INTO musica (NOMBRE, ARTISTA, ALBUM, GENERO, DURACION, ANIO) VALUES (?,?,?,?,?,?)";
private static final String UPDATE_MUSICA = "UPDATE musica SET NOMBRE=?, ARTISTA=?, ALBUM=?, GENERO=?, DURACION=?, ANIO=? WHERE ID_MUSICA = ?";
private static final String DELETE_MUSICA = "DELETE FROM musica WHERE ID_MUSICA = ?";
private static final String SELECT_MUSICA_BY_ID = " SELECT NOMBRE, ARTISTA, ALBUM, GENERO, DURACION, ANIO FROM TABLE_IN_JAVA WHERE ID_MUSICA = ? ";
private static final String SELECT_MUSICA_ALL = "SELECT NOMBRE, ARTISTA, ALBUM, GENERO, DURACION, ANIO, ID_MUSICA FROM TABLE_IN_JAVA";
Servlet que accede a las clases que conectan a la base de datos
Código:
protected void doGet(...)...{
if (request.getAttribute("musicas").equals("null")){
request.setAttribute("musicas", new Musica());
}else{
request.setAttribute("musicas", music.getAllMusica());
}
request.getRequestDispatcher("paginas/musica.jsp").forward(request, response);
}
protected void doPost(...)...{
Musica musica = new Musica();
try{
//Seteo los valores
musica.setNombre(request.getParameter("nombre"));
musica.setArtista(request.getParameter("artista"));
musica.setAlbum(request.getParameter("album"));
musica.setGenero(request.getParameter("genero"));
musica.setDuracion(Integer.parseInt(request.getParameter("duracion")));
musica.setAnio(Integer.parseInt(request.getParameter("anio")));
musica.setIdmusica(idmusica);
music.guardarMusica(musica);
//request.setAttribute("id", musica.getIdmusica());
}catch(Exception e){}
doGet(request,response);
}
Cuando coloco esto en el metodo doget
Código:
if (request.getAttribute("musicas").equals("null")){
request.setAttribute("musicas", new Musica());
}else{
request.setAttribute("musicas", music.getAllMusica());
}
Me muestra
Código:
Estado de HTTP 500 -
--------------------------------------------------------------------------------
type Informe de excepción
Mensaje
Descripción El servidor encontró un error interno () que impide satisfacer la solicitud.
Excepción java . lang . NullPointerException
Parece que no puedo acceder a la base de datos, porque me muestra null cuando quiero mostrar todas las musicas.