Re: getting null, in object transfer.
<prabodhachyutha@gmail.com> wrote in message
news:1183389996.512548.116930@k29g2000hsd.googlegroups.com...
| Hi,
|
| I got a problem when sending the data from the serverside and getting
| it back in the client side. We are not getting the object(here it is
| DataTransferObject which is Serializable) as null in the client side.
|
| I am putting the serverside code.
|
| public void sendDataObjectToClient(
| HttpServletResponse res,
| DataTransferObject obj,
| String accepts) {
|
| ByteArrayOutputStream bos = null;
| ObjectOutputStream oos = null;
| ServletOutputStream sos = null;
| boolean didCompress = false;
| try {
| sos = res.getOutputStream();
| bos = new ByteArrayOutputStream();
| oos = new ObjectOutputStream(bos);
| oos.writeObject(obj);
| oos.flush();
| oos.close();
| byte[] bytes = bos.toByteArray();
| int origLength = bytes.length;
| if ((bytes.length > 1024 * 2)
| && accepts != null
| && accepts.indexOf("gzip") >= 0) { // large response, compress it.
| ByteArrayOutputStream zbaos = new ByteArrayOutputStream();
| GZIPOutputStream zo = new GZIPOutputStream(zbaos);
| zo.write(bytes);
| zo.flush();
| zo.close();
| bytes = zbaos.toByteArray();
| log.debug(
| "Writing compressed response, orig="
| + origLength
| + " new length="
| + bytes.length);
| didCompress = true;
| } else {
| log.debug("Writing response, length=" + bytes.length);
| }
| res.setContentType("application/x-java-serialized-object");
| res.setContentLength(bytes.length);
| if (didCompress == true) {
| res.setHeader("Content-encoding", "gzip");
| }
| try {
| sos.write(bytes);
| sos.flush();
| } catch (IOException ioerror) {
| log.info("I/O Error to Client " + ioerror.toString());
| }
| } catch (Exception e) {
| log.error("Unexpected error sending data to client", e);
| } finally {
| if (sos != null) {
| try {
| sos.close();
| } catch (Exception ignored) {
| }
| }
| }
| }
|
Your writing code looks reasonable, other than the empty exception handler.
Are you sure that every object that is reachable from your
DataTransferObject is also serializable every time you write data? What
does your reading code look like? There are ways to miscode reading that
will cause the problem (e.g. expecting the data to arrive in a single
packet.)
Matt Humphrey matth@ivizNOSPAM.com http://www.iviz.com/