Foros del Web » Programación para mayores de 30 ;) » Java »

JSP + TOMCAT5.5.9 + MySQL = error 500

Estas en el tema de JSP + TOMCAT5.5.9 + MySQL = error 500 en el foro de Java en Foros del Web. Hola a todos!!! hace unos dias inicie un proyecto en JSP, pero me he quedado estancado en la conexion con la base de datos, he ...
  #1 (permalink)  
Antiguo 04/11/2005, 06:28
 
Fecha de Ingreso: noviembre-2005
Mensajes: 12
Antigüedad: 18 años, 6 meses
Puntos: 0
JSP + TOMCAT5.5.9 + MySQL = error 500

Hola a todos!!!

hace unos dias inicie un proyecto en JSP, pero me he quedado estancado en la conexion con la base

de datos, he leido bastante informacion acerca de la configuracion para establecer dicha

conexion, pero sigo recibiendo errores. --- realice algunos cambios y el error que recibo

actualmente es diferente al inicial.--- en la documentacion Tomcat, (por cierto estoy trabajando

con apache 2.0.54, Tomcat 5.5.9, MySQL Server 5.0) hay una conexion de ejemplo, la cual despues

de seguir todos los pasos, tampoco funciona.

el error que recibo actualmente es el siguiente:

************************************************** ******************************
Estado HTTP 500 -

--------------------------------------------------------------------------------

type Informe de Excepción

mensaje

descripción El servidor encontró un error interno () que hizo que no pudiera rellenar este

requerimiento.

excepción

org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:370)
org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet .java:802)

causa raíz

java.lang.NullPointerException
org.apache.jsp.equipo_jsp._jspService(org.apache.j sp.equipo_jsp:62)
org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet .java:802)

nota La traza completa de la causa de este error se encuentra en los archivos de diario de Apache

Tomcat/5.5.9.

--------------------------------------------------------------------------------

Apache Tomcat/5.5.9
************************************************** ********************************

La estructura que utilizo en la aplicacion es:

+ /SIAP
+ /WEB-INF
+ /classes
+ /mypack
- *.class
+ /src
+ /mypack
- *.java ****
+ /lib
- *.jar
- web.xml ****
+ /META-INF
- context.xml ****
+ /others
- *.htm
- *.jsp

Mi archivo context.xml es el siguiente:

************************************************** *********************************
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="/SIAP" path="/SIAP" reloadable="true">
<Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_Cocm_log."

suffix=".txt" timestamp="true"/>
<Resource name="jdbc/siapDB"
auth="Container"
type="javax.sql.DataSource"
maxActive="30"
maxIdle="10"
maxWait="1000"
factory="org.apache.tomcat.dbcp.dbcp.BasicDataSour ceFactory"
username="XXXX"
password="XXXX"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/cocm"
removeAbandoned="true"
removeAbandonedTimeout="60"
logAbandoned="true"/>
</Context>
************************************************** ***********************************

mi archivo web.xml es:

************************************************** ***********************************
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>Sistema de Informacion para la Administracion de Procesos</display-name>
<description>Administra los procesos de Centro Operativo de Comunicaciones y

Medios</description>
<distributable/>
<listener>
<listener-class>libreria.ContextListener</listener-class>
</listener>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>Index.jsp</welcome-file>
</welcome-file-list>
</web-app>
************************************************** ********

<--- CONTINUA SIGUIENTE MENSAJE --->

Zacjack_
  #2 (permalink)  
Antiguo 04/11/2005, 06:30
 
Fecha de Ingreso: noviembre-2005
Mensajes: 12
Antigüedad: 18 años, 6 meses
Puntos: 0
Continuacion del codigo

Esta es la etructura de directorios, espero aqui se entienda mejor
+ /SIAP
---+ /WEB-INF
--------+ /classes
------------+ /mypack
------------------ *.class
--------+ /src
------------+ /mypack
------------------- *.java ****
--------+ /lib
------------ *.jar
--------- web.xml ****
----+ /META-INF
--------- context.xml ****
----+ /others
-----------*.gif, *.jpg, *.etc
---- *.htm
---- *.jsp

y la verdad es que el mensaje anterior era originalmente mas largo, pero por el limite de 1000 caracteres, tuve que pasar esto para este otro mensaje

/libreria/ContextListener.java es:

************************************************** **************************************
package libreria;

import javax.servlet.*;

public final class ContextListener implements ServletContextListener {

public void contextInitialized (ServletContextEvent servletContextEvent) {
ServletContext servletContext = servletContextEvent.getServletContext ();
try {
LibrosBD librosBD = new LibrosBD ();
servletContext.setAttribute ("BaseDatos", librosBD);
}
catch (Exception e) {
servletContext.log ("No se pudo crear el atributo BaseDatos: " + e.getMessage ());
}
}

public void contextDestroyed (ServletContextEvent servletContextEvent) {
ServletContext servletContext = servletContextEvent.getServletContext ();
LibrosBD librosBD= (LibrosBD) servletContext.getAttribute ("BaseDatos");
librosBD.close ();
servletContext.removeAttribute ("BaseDatos");
}

}
************************************************** ***************************************

/libreria/LibrosBD.java es:

************************************************** ***************************************
package libreria;

import java.sql.*;
import java.util.*;
import javax.sql.*;
import javax.naming.*;

public class LibrosBD {
Connection connection;
private boolean connectionFree = true;
private ArrayList libros;

public LibrosBD () throws Exception {
try {
InitialContext initialContext = new InitialContext ();
Context envContext = (Context) initialContext.lookup ("java:comp/env");
DataSource dataSource = (DataSource) envContext.lookup ("jdbc/siapDB");
this.connection = dataSource.getConnection ();
}
catch (Exception e) {
throw new Exception ("No se pudo abrir la base de datos SIAP: " + e.getMessage ());
}
}

protected synchronized Connection getConnection () {
while (this.connectionFree == false) {
try {
wait ();
}
catch (InterruptedException e) {
}
}
this.connectionFree = false;
notify ();
return this.connection;
}

protected synchronized void releaseConnection () {
while (this.connectionFree == true) {
try {
wait ();
}
catch (InterruptedException e) {
}
}
this.connectionFree = true;
notify ();
}

public Libro getLibro (String Cod_equipo) {
try {
this.getConnection ();
PreparedStatement preparedStatement = this.connection.prepareStatement ("SELECT *.*

FROM libros WHERE Cod_equipo = ?");
preparedStatement.setString (1, Cod_equipo);
ResultSet resultSet = preparedStatement.executeQuery ();
if (resultSet.next ()) {
Libro libro = new Libro (resultSet.getString (1), resultSet.getString (2));
preparedStatement.close ();
this.releaseConnection ();
return libro;
}
else {
preparedStatement.close ();
this.releaseConnection ();
return null;
}
}
catch (SQLException e) {
this.releaseConnection ();
return null;
}
}

public Collection getLibros () {
libros = new ArrayList ();
try {
this.getConnection ();
PreparedStatement preparedStatement = this.connection.prepareStatement ("SELECT

Cod_equipo, nombre FROM equipo");
ResultSet resultSet = preparedStatement.executeQuery ();
while (resultSet.next ()) {
Libro libro = new Libro (resultSet.getString (1), resultSet.getString (2));
libros.add (libro);
}
preparedStatement.close ();
}
catch (SQLException e) {
return null;
}
this.releaseConnection ();

return libros;
}

public void close () {
try {
this.connection.close ();
}
catch (SQLException e) {
System.out.println (e.getMessage ());
}
}
}
************************************************** ***************************************

y el error guardado en logs/localhost.yyyy.mm.dd.txt

************************************************** ****************************************
3/11/2005 10:38:53 PM org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() para servlet jsp lanzó excepción
java.lang.NullPointerException
at org.apache.jsp.equipo_jsp._jspService(org.apache.j sp.equipo_jsp:62)
at org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
at org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:322)
at org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:291)
at org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
at

org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java:252)
at

org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invo ke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invo ke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invok e(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.servic e(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(H ttp11Processor.java:856)
at

org.apache.coyote.http11.Http11Protocol$Http11Conn ectionHandler.processConnection(Http11Protocol.

java:744)
at org.apache.tomcat.util.net.PoolTcpEndpoint.process Socket(PoolTcpEndpoint.java:527)
at

org.apache.tomcat.util.net.LeaderFollowerWorkerThr ead.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlR unnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
************************************************** *****************************************


// bastante largo, pero la verdad es que pense que entre mas especifico fuera mas facil

comprenderian el problema y mas rapido podria solucionarlo.

De antemano, agradezco a todo aquel que dedique algo de su tiempo para atender mi inquietud.
Mi correo es: [email protected]
pongo la direccion de correo, porque este mensaje esta en varios foros y asi me es mas facil leer

sus comentarios, de nuevo gracias.

Zacjack_
  #3 (permalink)  
Antiguo 05/11/2005, 04:50
 
Fecha de Ingreso: noviembre-2005
Mensajes: 9
Antigüedad: 18 años, 6 meses
Puntos: 0
¿y el jsp?

Hola...

has mandado todo menos lo mas importante... el jsp "equipo.jsp" que es el que da el error.

Si te fijas la traza te dice que en la linea 52 de equipo_jsp.java ha dado un NullPointer.
Ve al directorio work del tomcat, navega hasta el directorio de tu aplicacion, edita el archivo equipo_jsp.java, y mira qué es lo que hace la linea 52, eso te dará más pistas.

Saludos.

PD: ¿Has metido las librerias del driver jdbc de MySQL en el /common/lib del tomcat?
  #4 (permalink)  
Antiguo 05/11/2005, 04:51
 
Fecha de Ingreso: noviembre-2005
Mensajes: 9
Antigüedad: 18 años, 6 meses
Puntos: 0
Hola otra vez...
queria decir la linea 62. Perdona.

Saludos
  #5 (permalink)  
Antiguo 05/11/2005, 04:54
 
Fecha de Ingreso: noviembre-2005
Mensajes: 9
Antigüedad: 18 años, 6 meses
Puntos: 0
Hola jeje...

me parece que te falta un <resource-ref> en tu web.xml que apunte al Resource que has creado en el server.xml ¿no?

ya te dejo en paz..

Saludos.
  #6 (permalink)  
Antiguo 08/11/2005, 11:21
 
Fecha de Ingreso: noviembre-2005
Mensajes: 12
Antigüedad: 18 años, 6 meses
Puntos: 0
tienes razon

hola jorjor!!!

la verdad el archivo no alcanza las 62 lineas mira:
************************************************** *
<%@ page language="java" %>
<%@ page import="java.util.*" %>
<%@ page import="libreria.*" %>

<html>
<head>
<title>Página Principal de mi Librería</title>
</head>
<body bgcolor="#ffffee">
<h1><center>Página Principal de mi Librería</center></h1>
<table align="center" cellpadding="2" cellspacing="2" border="1"
width="80%" bgcolor="#dddddd">
<tr>
<th>CODIGO</th>
<th>NOMBRE</th>
</tr>
<%
LibrosBD librosBD = (LibrosBD) application.getAttribute ("BaseDatos");
Collection libros = librosBD.getLibros();
if (libros != null) {
if (libros.size () > 0) {
for (Iterator iterator = libros.iterator(); iterator.hasNext(); ) {
Libro libro = (Libro) iterator.next ();
%>
<tr>
<td>
<%= libro.getCode () %>
</td>
<td>
<%= libro.getNombre () %>
</td>
</tr>
<%
}
}
}
%>
</table>
<br>
</body>
</html>
************************************************** **

gracias por responder, el error se debe a algo de un dato null, y si el error se encuentra en esta linea:

LibrosBD librosBD = (LibrosBD) application.getAttribute ("BaseDatos");

(LibrosBD) application.getAttribute ("BaseDatos") es null, luego asigno esto a librosBD, y de ahi en adelante pues bueno el error lo dice ya no?

ahora; mescionaste...

>>>
me parece que te falta un <resource-ref> en tu web.xml que apunte al Resource que has creado en el server.xml ¿no?
>>>

te refieres a algo como...
**********************
<resource-ref>
<description>
REFERERNCIA A LA BASE DE DATOS
</description>
<res-ref-name>
jdbc/siapDB
</res-ref-name>
<res-type>
javax.sql.DataSource
</res-type>
<res-auth>
Container
</res-auth>
</resource-ref>
*********************

y del server.xml... tenia entendido que lo menjor erea no modificar este archivo, el recurso debe ser de la aplicacion web, no del servidor, o al menos eso fue lo que leí en alguna parte.

si ha de modificarse el server.xml, donde ubico el recurso y como lo creo?

y si no es mucha molestia podria exlicarme un poco como funciona el web listener y de donde sale ese "application" de esta linea?
LibrosBD librosBD = (LibrosBD) application.getAttribute ("BaseDatos");

Gracias y disculpa la molestia pero apenas inicio en esto JEJE X)
Zacjack_
  #7 (permalink)  
Antiguo 08/11/2005, 15:56
 
Fecha de Ingreso: noviembre-2005
Mensajes: 1
Antigüedad: 18 años, 6 meses
Puntos: 0
lo mas seguro es que en equipo.jsp estes pasando una variable equivocada o apuntando a lo que no debe apuntar revisa en detalle equipo.jsp lo mas seguro es que tengas un error de escritura, me ha pasado algunas veces
  #8 (permalink)  
Antiguo 09/11/2005, 06:59
 
Fecha de Ingreso: noviembre-2005
Mensajes: 12
Antigüedad: 18 años, 6 meses
Puntos: 0
Por Fin!!!

Al fin despues de casi tres semanas!!!

tenias toda la razon faltaba el resource-ref.

pero resulta que ahora tengo una inquietud: alguien me dijo que trabajara con netbeans, y, en efecto, asi lo hice, cree un nuevo proyecto y añadi todos y cada uno de los archivos que ya tenia creados, netbeans tiene tomcat5.5.7, yo tengo el 5.5.9, netbeans me genera el .war, pero cuando despliego este archivo la aplicacion no me corre...

se que ya corre puesto que cuando mando correr proyecto en netbeans todo sale bien, tengo que hacer algo mas aparte de desplegar el .war??

gracias.
Zacjack_
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:47.