Ver Mensaje Individual
  #4 (permalink)  
Antiguo 26/10/2011, 01:22
leeann
 
Fecha de Ingreso: febrero-2006
Mensajes: 297
Antigüedad: 18 años, 9 meses
Puntos: 1
Respuesta: devolver listado de objetos en servicio web

Hasta qué punto depende?
Lo único que he hecho ha sido crear una web application y dentro crear un webService con netbeans. Es tal y como lo he hecho en otros ejercicios, y me funciona si lo que devuelvo es un String...
El código del sevicio es:

Código JAVA:
Ver original
  1. package ws;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.ResultSet;
  6.  
  7. import java.sql.SQLException;
  8. import java.sql.Statement;
  9. import java.util.List;
  10. import javax.jws.WebMethod;
  11. import javax.jws.WebService;
  12.  
  13.  
  14. @WebService()
  15. public class GestionHotel {
  16.     private Statement st;
  17.     private Connection connection;
  18.     public GestionHotel() throws ClassNotFoundException, SQLException{
  19.        try{
  20.         Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  21.  
  22.         connection=DriverManager.getConnection("jdbc:odbc:hotel");
  23.         st=connection.createStatement();
  24.         } catch(Exception e){ System.out.println("Error al cargar el Driver"); }
  25.     }
  26.        /**
  27.      * Web service operation
  28.      */
  29.     @WebMethod(operationName = "MostrarHabitaciones")
  30.     public List<Habitacion> MostrarHabitaciones() {
  31.         //TODO write your implementation code here:
  32.         List<Habitacion> listado=null;
  33.         Habitacion h;
  34.         try{
  35.         ResultSet rs = st.executeQuery("select * from habitaciones LIMIT 0,1");
  36.          
  37.             while ( rs.next() )
  38.             {
  39.                 h= new Habitacion();
  40.                 h.setNumero(rs.getInt(2));
  41.                 h.setCapacidad(rs.getInt(3));
  42.                 h.setPrecio(rs.getInt(4));
  43.                 listado.add(h);
  44.             }
  45.        
  46.         }catch(Exception e){ System.out.println("Error al realizar consulta"); }
  47.        
  48.         return listado;
  49.     }
  50.        
  51.  
  52. }

y mi clase de Habitación es la siguiente:
Código java:
Ver original
  1. public class Habitacion {
  2.     public int numero;
  3.     public int precio;
  4.     public int capacidad;
  5.    
  6.     public Habitacion(){
  7.        super();
  8.     }
  9.  
  10.     public int getCapacidad() {
  11.         return capacidad;
  12.     }
  13.  
  14.     public void setCapacidad(int capacidad) {
  15.         this.capacidad = capacidad;
  16.     }
  17.  
  18.     public int getNumero() {
  19.         return numero;
  20.     }
  21.  
  22.     public void setNumero(int numero) {
  23.         this.numero = numero;
  24.     }
  25.  
  26.     public int getPrecio() {
  27.         return precio;
  28.     }
  29.  
  30.     public void setPrecio(int precio) {
  31.         this.precio = precio;
  32.     }
  33.  
  34.  
  35. }

De momento no he implementado el cliente, hasta que no vea que sale bien el resultado de Test Web Service. De todas formas lo que haré será otro nuevo proyecto, New WebServiceClient y ponerle la ruta del wsdl de este servicio para poder agregarlo... Hay algo que esté mal? Lo haríais de otra forma?
Como tengo que usar el servicio web para gestionar el tema de la reserva de habitaciones, se me había ocurrido que una de las operaciones sea mostrar habitaciones y luego vendría la de realizar reserva... a lo mejor hay otras formas de hacerlo.