Link to home
Start Free TrialLog in
Avatar of hexiaoquan
hexiaoquan

asked on

how do client get data packet returned from EJB method (public List getResultset(String sql)) ?

Hi,
  where I define one method in Entity bean which return query result,I test it in Entity bean body,it can get right return.But from client ,I can not get returned data. What is the reason for that?
java.lang.NullPointerException

      void com.evermind.server.rmi.RMIConnection.EXCEPTION_ORIGINATES_FROM_THE_REMOTE_SERVER(java.lang.Throwable)

            RMIConnection.java:1558

      java.lang.Object com.evermind.server.rmi.RMIConnection.invokeMethod(com.evermind.server.rmi.RMIContext, long, long, java.lang.reflect.Method, java.lang.Object[])

            RMIConnection.java:1511

      java.lang.Object com.evermind.server.rmi.RemoteInvocationHandler.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[])

            RemoteInvocationHandler.java:55

      java.lang.Object com.evermind.server.rmi.RecoverableRemoteInvocationHandler.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[])

            RecoverableRemoteInvocationHandler.java:22

      java.util.List __Proxy1.getResultset(java.lang.String)

      void Samplebbs_live.Tb_userClient.main(java.lang.String[])

            Tb_userClient.java:84

  Entity Bean:
  public List getResultset(String sql)
  {
   List list = new ArrayList();      
    try
   {
    dbconn = getConnection();
    st = dbconn.createStatement();
    rs = st.executeQuery(sql);
    ResultSetMetaData mtdata = rs.getMetaData();
    if (rs==null)
    {
      System.out.println("null data");
      return Collections.EMPTY_LIST;      
    }      
    int col = mtdata.getColumnCount();
    while (rs.next())
    {
       map = new HashMap(col);
       for (int i=1;i<=col;i++)
       {
           map.put(mtdata.getColumnName(i),rs.getString(i));                
       }
       list.add(map);
    }
    dbclose(st,rs,dbconn);
    for (int j=0;j<list.size();j++)
   {
     Map m = new HashMap(col);
     m = (Map)list.get(j);
     System.out.println(j);
     System.out.println((String)m.get("mailaddr"));
   }
   }

   catch (Exception se)
   {
     se.printStackTrace();
     return Collections.EMPTY_LIST;
   }   System.out.println("4");
    return list;
  }
but when I called it from client by the following way:
...............
      List lt = new ArrayList();
      lt = tb_user.getResultset("select * from tb_user");    ---error here
     //tb_user ---EJB Object
..............
Avatar of girionis
girionis
Flag of Greece image

 Can you do a System.out.println(list) in your EJB before this line: return list; and tell us the output?
 Also look at the server console/logs for any possible exceptions.
Avatar of hexiaoquan
hexiaoquan

ASKER

Yeah,I can get System.out.println(List) in EJB

  for (int j=0;j<list.size();j++)
   {
     Map m = new HashMap(col);
     m = (Map)list.get(j);
     System.out.println(j);
     System.out.println((String)m.get("mailaddr"));
   }

 It can run well.
Now I get the right answer,Return value Type shout implements java.io.Serializable,
but list do not implement it.so I change it to Vector or rowset.It is ok now

thanks.
 Ah... yes true, the object should implement serializable if you want to return it...

  Please ask a question here https://www.experts-exchange.com/Community_Support/ for zero points to PAQ the question and refund the points to you.
ASKER CERTIFIED SOLUTION
Avatar of DarthMod
DarthMod
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial