2017-10-16 16 views
0

Sur tomcat, j'ai une classe qui retourne une liste d'objets de la base de données, quelque chose comme ceci:Comment retourner une liste dans Apache Axis

List<Entity> list = null; 
Connection con = null; 
PreparedStatement pstm = null; 
ResultSet rs = null; 
try { 
     con = Connector.getConexion(); 
     String sql = "SELECT * FROM some_table LIMIT 10;"; 
     pstm = con.prepareStatement(sql); 
     rs = pstm.executeQuery(); 
     list = new ArrayList<>(); 
     EntityCrimesChicago ecc = null; 

     while (rs.next()) { 
      e = new Entity(); 
      e.setID(rs.getString(1)); 
      e.setCase_Number(rs.getString(2)); 
      list.add(e); 
     } 
     return list; 
catch { ... } 
finally { ... } 

L'entité et de la table ont tous les champs Chaîne/varchar , même l'ID.

Le service obtient la liste avec (ce qui est une méthode Web):

public List<Entity> someThing(String q) { 
    DAOThings controller = new DAOThings(); 
    List<Entity> things = controller.getSomeThings(Integer.parseInt(q)); 
    return things; 
} 

Ce retour

java.io.IOException: No serializer found for class Entity in registry [email protected] 

Mais, si je change la méthode Web pour retourner un String et j'utilise return things.toString(); qui renvoient les objets, mais pas le son contenu. Que puis-je faire pour renvoyer la liste correctement?

Je tente de retourner une liste de chaînes ajoutée manuellement et fonctionne correctement.

Répondre

0

Je résous mon problème en passant l'objet à un tableau String.

Quand je reçois la liste des objets:

public List<Entity> someThing(String q) { 
    DAOThings controller = new DAOThings(); 
    List<Entity> things = controller.getSomeThings(Integer.parseInt(q)); 
    return things; 
} 

Je ne dois faire ceci:

public List<String[]> someThing(String q) { 
    DAOThings controller = new DAOThings(); 
    List<Entity> things = controller.getSomeThings(Integer.parseInt(q)); 
    List<String[]> list = new ArrayList<>; 

    for (Entity value : things) { 
      String[] array = new String[obj_fields]; 
      array[0] = value.getAny(); 
      ... 
      array[n] = value.getAny(); 
      list.add(array); 
    } 
    return list; 
} 

Et Apache Axis-ce que la magie.