Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: Web Service

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    324

    Web Service

    Ciao Ragazzi,

    premesso che sono alle prime armi con i Web Service con Axis in combinazione con Java. Stavo creando un piccolo esempio per cercare di capire come funziona il tutto.
    Per rendere piu chiara la situazione ho due progetti uno di chiamato "ServizioChiamante" e l'altro "ServizioRicevente" che mi servivano per fare delle semplice operazioni tra cui:
    - inserisci utente
    - modifica utente
    - elimina utente
    niente di eccezionale direi, ma per me si sta trasformando in un impresa ardua... = )

    L'inserimento utente riesco tranquillamente a effettuarlo, ma quando cerco di fare una modifica utente li si complica la cosa. Perchè quando inserisco i dati nella Jsp e questi dati vengo inviati al metodo presente in "ServizioRicevente", i dati vengono recepiti e anche elaborati, ma al momento della restituzione del dato mi da questo tipo di errore:

    codice:
     rg.xml.sax.SAXException: No deserializer for {Utente}UtenteDTO org.apache.axis.AxisFault.makeFault(AxisFault.java:101) org.apache.axis.client.Call.invoke(Call.java:2470) org.apache.axis.client.Call.invoke(Call.java:2366) org.apache.axis.client.Call.invoke(Call.java:1812) servlet.ServletAxis.processRequest(ServletAxis.java:124) servlet.ServletAxis.doPost(ServletAxis.java:49) javax.servlet.http.HttpServlet.service(HttpServlet.java:637) javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    e non capisco che devo fare anche perchè se provo a impostarlo nel mio file.Wsdd il servizio esposto non compare più... Ho anche fatto altri test, ma non riuscendo ad arrivare a nessun tipo di soluzione.

    Qualcuno di voi per caso mi sa dare una mano in questione, anche perchè sinceramente non so piu dove sbattere la testa.


    Grazie anticipatamente.

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    è un errore legato al saxparser...hai l'intero trace?
    devi cercare quello che dice su caused by

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    324

    Re: Web Service

    sisi ecco a te la cause dell'errore.

    codice:
    root cause  org.xml.sax.SAXException: No deserializer for {Utente}UtenteDTO 	org.apache.axis.encoding.DeserializerImpl.onStartElement(DeserializerImpl.java:453) 	org.apache.axis.encoding.DeserializerImpl.startElement(DeserializerImpl.java:393) 	org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1048) 	org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:165) 	org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1141) 	org.apache.axis.encoding.DeserializerImpl.startElement(DeserializerImpl.java:369) 	org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1048) 	org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:165) 	org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1141) 	org.apache.axis.encoding.DeserializerImpl.startElement(DeserializerImpl.java:369) 	org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1048) 	org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:165) 	org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1141) 	org.apache.axis.message.RPCElement.deserialize(RPCElement.java:345) 	org.apache.axis.message.RPCElement.getParams(RPCElement.java:384) 	org.apache.axis.client.Call.invoke(Call.java:2467) 	org.apache.axis.client.Call.invoke(Call.java:2366) 	org.apache.axis.client.Call.invoke(Call.java:1812) 	servlet.ServletAxis.processRequest(ServletAxis.java:124) 	servlet.ServletAxis.doPost(ServletAxis.java:49) 	javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    googla su quello, a prima vista mi viene da pensare che la tua classe utente non sia serializable

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    324
    dall'errore si direbbe cosi, ma il problema che la mia classe Utente implementa la classe Serializable.

    Per questo non capisco per quale motivo mi fornisce un tipo di errore di quel genere. Infatti spero che qualcuno mi sappia dare una mano anche perchè ho cercato dovunque senza ottenere un risultato decente.

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    quale è l'oggetto che mandi via xml?? quello deve essere serializzabile

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    324
    sotto ti ho copiato la classe che utilizzo come riferimento per il passaggio di dati. Solo che credo non sia la classe di per se il problema ma bensi il fatto che il mio metodo cerca di inviarmi un List di questo ogggetto. Quindi non so se devo cche devo fare sinceramente.

    questa è la classe che utlizzo per passare i dati:

    codice:
    package dto;  
    import java.io.Serializable; 
    
    public class UtenteDTO implements Serializable{
    
    /** 	 *  	 */ private static final long serialVersionUID=2668829823212145195L;
     private int idUtente;
     private String nome;
     private String cognome;
     private String eta;
     private String indirizzo;
     
     public int getIdUtente() {
           return idUtente;
    }
     public void setIdUtente(int idUtente) { 		
          this.idUtente = idUtente; 
    	}
     public String getNome() { 
    	return nome; 
     }
     public void setNome(String nome) { 
         this.nome = nome; 	
     } 
     public String getCognome() {
       return cognome; 	
     }
     public void setCognome(String cognome) { 
      this.cognome = cognome;
     }
     public String getEta() { 
       return eta;
     }
     public void setEta(String eta) { 
       this.eta = eta;
     }
     public String getIndirizzo() {
      return indirizzo;
     }
     public void setIndirizzo(String indirizzo) {
      this.indirizzo = indirizzo;
     }
    }

    invece il metodo con cui cerco di farmi passare un List è:

    codice:
    	
    public List ricercaUtenti(UtenteDTO utente){ 		 		 		
       List risultatoRicercaUtenti = new ArrayList(); 		
       UtenteDTO ute = null; 		
       boolean valorizzazioneCampo = false; 		
       String sql = "select * from test.servizi where "; 		 		
    
       if(utente.getNome() != null){ 
    	   valorizzazioneCampo = true; 			
               sql = sql + "nome = ?"; 		
       }
       if(utente.getCognome() != null){
            if(valorizzazioneCampo){
                   sql = sql + " and cognome = ?";
        }else{ 				
                valorizzazioneCampo = true; 				
                sql = sql + " cognome = ?"; 
               }
        }
        if(utente.getEta() != null){ 
            if(valorizzazioneCampo){ 
     	 sql = sql + " and eta = ?";
    	}else{
             valorizzazioneCampo = true;
             sql = sql + " eta = ?"; 
    	}
       }
       if(utente.getIndirizzo() != null){
            if(valorizzazioneCampo){ 				
                sql = sql + " and indirizzo = ?"; 			
            }else{
                valorizzazioneCampo = true;
                sql = sql + " indirizzo = ?"; 	
    	}
       }
       try {
         ps = conn.prepareStatement(sql);
              if(utente.getNome() != null){
            	ps.setString(1, utente.getNome()); 			
           }
    	if(utente.getCognome() != null){
    		ps.setString(2, utente.getCognome()); 
           }
           if(utente.getEta() != null){
             	ps.setString(3, utente.getEta());
    	}
    	if(utente.getIndirizzo() != null){ 			
                   	ps.setString(4, utente.getIndirizzo()); 
    	}
                
              System.out.println(sql); 			
              ResultSet rs = ps.executeQuery(); 			
              while(rs.next()){ 				
                    ute = new UtenteDTO();
                    ute.setIdUtente(rs.getInt(2));
                    ute.setNome(rs.getString(3));
                    ute.setCognome(rs.getString(4));
                    ute.setEta(rs.getString(5));
                    ute.setIndirizzo(rs.getString(6));
                    risultatoRicercaUtenti.add(ute);
    	}
          } catch (SQLException e) {
     		// TODO Auto-generated catch block
                    e.printStackTrace();
          }
    	try {
               Call call = (Call) new Service().createCall();
      
         call.registerTypeMapping(List.class, new  
                          QName("myNS:UtenteDTO"),BeanSerializerFactory.class, 
                          BeanDeserializerFactory.class);
    
     		} catch (ServiceException e) { 
                        // TODO Auto-generated catch block
                         e.printStackTrace();
     		} 		 		
    
                   return risultatoRicercaUtenti; 
    
    }

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    prova a farti tornare un solo elemento (per prova), vedi se il punto è la lista o il contenuto.
    List alla fine è un'interfaccia, a meno che non usi qualcosa di non serializzabile come istanza dovresti poter fare il passaggio.

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    324
    ho risolto....
    sbagliavo nel configurare un parametro e pertanto non riusciva a serializzarmi la classe.... = )

    Meno male... = )

    Comunque grazie mille per il tuo aiuto... = )

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    prego anche se non ho fatto molto.
    Ti capisco perché ci lavoro con i web service e di supporto ce ne sta poco!! ciauuu

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.