• Domingo 17 de Noviembre de 2024, 20:49

Autor Tema:  Problema JSP  (Leído 3840 veces)

laurita_85_

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Problema JSP
« en: Domingo 12 de Diciembre de 2010, 22:37 »
0
Hola buenas tardes, me ha surgido un problema y agradecería mucho una ayuda.

Estoy desarrollando una aplicación web con jsp, los jsp acceden a un servicio web en java que comunica con una base de datos en MySQL. El problema le tengo al llamar a un método del servicio web que devuelve objetos Vector<Descripcion> siendo Descripcion una clase con una serie de atributos a los que quiero acceder desde la jsp.
El código de la jsp es el siguiente:

<%@page import="org.apache.axis.client.Call"%>
<%@page import="org.apache.axis.client.Service"%>
<%@page import="org.apache.axis.encoding.XMLType"%>
<%@page import="java.util.Vector"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.*"%>
<%@page import="javax.xml.rpc.ParameterMode"%>
<%@page import="servidor.Descripcion"%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>

<table>
<%
try {


String sql="aqui va la sentencia sql";
String endpoint="url del servicio web con extensión .jws ";
Service service = new Service ();
Call call = (Call) service.createCall ();
call.setTargetEndpointAddress(new java.net.URL(endpoint));

call.setOperationName("obtenerBreveDescripcionVector");

call.addParameter( "sql", XMLType.XSD_STRING, ParameterMode.IN );

call.setReturnType (XMLType.SOAP_VECTOR);
Vector<Descripcion> ret = (Vector<Descripcion>) call.invoke (new Object [] {sql});

for(int i=0; i<ret.size(); i++){

String id=ret.get(i).getId();
String curso = (String)ret.get(i).getCurso();
String creditos = ret.get(i).getCreditos();
String semestre = ret.get(i).getSemestre();
String horas = ret.get(i).getHorasSemana();
String horario = ret.get(i).getHorario();
String grupo = ret.get(i).getGrupo();
String aulaT = ret.get(i).getAulaT();
String aulaP = ret.get(i).getAulaP();
String profesores = ret.get(i).getProfesores();

out.println("<tr><td>Curso</td><td>"+curso+"</td></tr><tr><td>Créditos</td><td>"+creditos+"</td></tr><tr><td>Semestre</td><td>"+semestre+"</td></tr><tr><td>Horas/Semana</td><td>"+horas+"</td></tr><tr><td>Horario</td><td>"+horario+"</td></tr><tr><td>Grupo</td><td>"+grupo+"</td></tr><tr><td>Aula de teoría</td><td>"+aulaT+"</td></tr><tr><td>Aula de prácticas</td><td>"+aulaP+"</td></tr><tr><td>Profesores</td><td>"+profesores+"</td></tr>");

}

catch (Exception ex) {
// TODO handle custom exceptions here
}
%>
<br>
<br>
<br>
</table>
</body>
</html>


Basicamente la duda que tengo debería estar en las siguientes lineas:

call.setReturnType (XMLType.SOAP_VECTOR);
Vector<Descripcion> ret = (Vector<Descripcion>) call.invoke (new Object [] {sql});

No se si es correcta la invocación para un Vector de objetos de una clase propia, no me da ningun error simplemente me muestra la jsp en blanco. El acceso del servicio web a la base de datos es correcto, el problema debería estar en este código.


Muchisimas gracias,

Un saludo.

shadow_rev

  • Miembro MUY activo
  • ***
  • Mensajes: 397
  • Nacionalidad: co
  • Un SPARTAN no muere en combate
    • Ver Perfil
    • http://shadowrev.blogspot.com
Re: Problema JSP
« Respuesta #1 en: Lunes 13 de Diciembre de 2010, 15:56 »
0
Pon algo en la sentencia catch, ya que así como lo tienes no te va a arrojar ningún error y no te das cuenta de qué está ocurriendo.
Código: Java
  1. // ...
  2. catch(Exception ex) {
  3.   // Solo espero que hallas declarado el stream out por fuera del bloque try
  4.   out.println("<pre>" + ex.getMessage() + "</pre>");
  5.   // Imprime el error en la salida stderr, que se captura en una consola o en el log del servidor
  6.   System.err.println(ex.getMessage());
  7. }
  8. // ...
  9.  
No conozco muy bien la sintaxis de Vector  :unsure: , pero espero que esto al menos te ayude a identificar el error.
:suerte:
Volará quien le ponga alas a sus sueños (Candidate for goddess)
Si el mal existe en este mundo, reside en el corazón de la humanidad (Edward D. Morrison - Tales of Phantasia)
Lo único que puedes cambiar del pasado, es lo que sientes por él en el presente (Lockon Stratos - Mobile Suit Gundam 00)
Ingeniero de Sistemas

laurita_85_

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Problema JSP
« Respuesta #2 en: Lunes 13 de Diciembre de 2010, 21:20 »
0
Muchas gracias!!

Había probado a imprimirla peror staba poniendolo mal. Ahora si que me muestra el siguiente error:

; nested exception is:
   org.xml.sax.SAXParseException: Premature end of file.

Aún no se a que se puede deber, ¿alguna idea? Seguire investigando xD. Muchisimas gracias por la respuesta!

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Problema JSP
« Respuesta #3 en: Lunes 13 de Diciembre de 2010, 22:23 »
0
Parece que el XML lo estás mandando mal. Intenta ver qué función es la que lanza esa excepción. Haz try-catch más pequeños para localizar el problema si hay varias que lancen SAXParseException.

laurita_85_

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Problema JSP
« Respuesta #4 en: Lunes 20 de Diciembre de 2010, 18:37 »
0
El error está en esta linea:

Vector<Descripcion> ret = (Vector<Descripcion>) call.invoke (new Object [] {sql});

supongo que el problema está al devolver el objeto de mi clase propia Descripcion, el método del servicio web al que estoy llamando es el siguiente:

public Vector<Descripcion> obtenerObjetivosVector(String sql) throws Exception
    {
            this.Conectar();

            Statement stmt;
            ResultSet res = null;

            String [] columnas;
            Vector<Descripcion> resultados = new Vector<Descripcion>();
 
try
            {
                stmt = conn.createStatement();

                    res  = stmt.executeQuery(sql);


                    while(res.next())
                    {
                        Descripcion desc = new Descripcion();
      String [] columnas= desc.getColumnas();
                       
       String dato0 = res.getString(columnas[0]);
                        desc.setId(dato0);
                        String dato1 = res.getString(columnas[1]);
                        desc.setCurso(dato1);
                        String dato2 = res.getString(columnas[2]);
                        desc.setCreditos(dato2);
                        String dato3 = res.getString(columnas[3]);
                        desc.setSemestre(dato3);
      String dato4 = res.getString(columnas[4]);
                        desc.setHorasSemana(dato4);
                        String dato5 = res.getString(columnas[5]);
                        desc.setHorario(dato5);
                        String dato6 = res.getString(columnas[6]);
                        desc.setGrupo(dato6);
                        String dato7 = res.getString(columnas[7]);
                        desc.setAulaT(dato7);
                        String dato8 = res.getString(columnas[8]);
                        desc.setAulaP(dato8);
                        String dato9 = res.getString(columnas[9]);
                        desc.setProfesores(dato9);
                       
                        resultados.add(desc);
         
                    }


                res.close();
                stmt.close();
            }
            catch (SQLException e)
            {
                // TODO Auto-generated catch block
            }

            this.Desconectar();

            return resultados;


           
    }

¿Estoy comentiendo algun error al hacer el call.invoke para este tipo de datos?¿Cómo se puede hacer para una clase propia?

Gracias nuevamente

arielb

  • Moderador
  • ******
  • Mensajes: 771
  • Nacionalidad: pa
    • Ver Perfil
    • http://coder-pa.blogspot.com
Re: Problema JSP
« Respuesta #5 en: Martes 21 de Diciembre de 2010, 16:13 »
0
tienes el sql en un xml?, creo que todo va por lo que dice el amigo moskito. está mal formateada
"Porque de tal manera amó Dios al mundo que dio a su hijo unigénito para que todo aquél que en él crea no se pierda mas tenga vida eterna"
Juan 3:16

http://coder-pa.blogspot.com

laurita_85_

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Problema JSP
« Respuesta #6 en: Martes 21 de Diciembre de 2010, 16:47 »
0
Gracias por la respuesta :), el sql no lo tengo en un xml, tengo mi base de datos en mysql y accedo a la informacion con el método descrito anteriormente de mi servicio web(.jws) sobre axis.

¿Es correcto entonces en el cliente  para una clase propia lo siguiente?:

call.setReturnType (XMLType.SOAP_VECTOR);
Vector<Descripcion> ret = (Vector<Descripcion>) call.invoke (new Object [] {sql});

Muchas gracias de nuevo!

arielb

  • Moderador
  • ******
  • Mensajes: 771
  • Nacionalidad: pa
    • Ver Perfil
    • http://coder-pa.blogspot.com
Re: Problema JSP
« Respuesta #7 en: Martes 21 de Diciembre de 2010, 17:36 »
0
si está bien, puede ser que el error está en la cadena sql, la estás poniendo algún caracter a la cadena, pon un sql sencillo sin punto y coma o algún otro caracter, para que realices la prueba.
"Porque de tal manera amó Dios al mundo que dio a su hijo unigénito para que todo aquél que en él crea no se pierda mas tenga vida eterna"
Juan 3:16

http://coder-pa.blogspot.com