One suggestion is to separate the messages from the payload and use a
different protocol for the payload.  For example, having the receiver reach
back across the network when it is ready to read the payload.  This has
several advantages:

- The receiver can impose flow control on the heavy messages by deciding
when it wants the data.
- You can use one network for the lighter messages that coordinate activity
and another network for the bandwidth intensive data transfers.
- You can avoid Java serialization for heavy if you have simple objects
such as arrays.

Bryan

----
Bryan Thompson
Chief Scientist & Founder
SYSTAP, LLC
4501 Tower Road
Greensboro, NC 27410
br...@systap.com
http://blazegraph.com
http://blog.bigdata.com <http://bigdata.com>
http://mapgraph.io

Blazegraphâ„¢ <http://www.blazegraph.com/> is our ultra high-performance
graph database that supports both RDF/SPARQL and Tinkerpop/Blueprints
APIs.  Blazegraph is now available with GPU acceleration using our disruptive
technology to accelerate data-parallel graph analytics and graph query.

CONFIDENTIALITY NOTICE:  This email and its contents and attachments are
for the sole use of the intended recipient(s) and are confidential or
proprietary to SYSTAP. Any unauthorized review, use, disclosure,
dissemination or copying of this email or its contents or attachments is
prohibited. If you have received this communication in error, please notify
the sender by reply email and permanently delete all copies of the email
and its contents and attachments.

On Fri, Sep 11, 2015 at 12:38 PM, Palash Ray <paa...@gmail.com> wrote:

> Hi,
>
> I have a Jini server, and I am doing a lookup from a Jini registry and
> then making a call on the remote.
>
> The client code is:
>         LookupLocator lookupLocator = new LookupLocator(jiniRegistryUrl);
>         return (Remote) lookupLocator.getRegistrar().lookup(new
> ServiceTemplate(null,
>                 new Class[]{serviceInterfaceClass}, new Entry[]{new
> Name(serviceName)}));
> We are transmitting pretty heavy objects: ArrayList having a million+
> rows. It works fine for most part. However, when the list has over 10
> million rows, the server is still fine. But, the client starts
> behaving weird and throwing java.io.EOFException. I am pasting the
> full stack trace.
>
> Any help would be appreciated.
>
> Thanks,
> Palash.
>
>
> Caused by: java.lang.reflect.InvocationTargetException
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at
> com.imsi.iss.portiss.jasper.query.RmiQueryExecutor.queryReportData(RmiQueryExecutor.java:112)
>         at
> com.imsi.iss.portiss.jasper.query.PortissQueryExecutor.createDatasource(PortissQueryExecutor.java:41)
>         ... 16 more
> Caused by: java.rmi.UnmarshalException: exception unmarshalling
> response; nested exception is:
>         java.io.EOFException
>         at
> net.jini.jeri.BasicInvocationHandler.invokeRemoteMethodOnce(BasicInvocationHandler.java:847)
>         at
> net.jini.jeri.BasicInvocationHandler.invokeRemoteMethod(BasicInvocationHandler.java:659)
>         at
> net.jini.jeri.BasicInvocationHandler.invoke(BasicInvocationHandler.java:528)
>         at
> com.sun.proxy.$Proxy176.getPartnerStatementStrategicValue(Unknown
> Source)
>         ... 22 more
> Caused by: java.io.EOFException
>         at
> java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2596)
>         at
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1316)
>         at
> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1989)
>         at
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1913)
>         at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796)
>         at
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348)
>         at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
>         at java.util.HashMap.readObject(HashMap.java:1155)
>         at sun.reflect.GeneratedMethodAccessor57.invoke(Unknown Source)
>         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at
> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
>         at
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1891)
>         at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796)
>         at
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348)
>         at
> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1989)
>         at
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1913)
>         at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796)
>         at
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348)
>         at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
>         at java.util.ArrayList.readObject(ArrayList.java:733)
>         at sun.reflect.GeneratedMethodAccessor291.invoke(Unknown Source)
>         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at
> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
>         at
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1891)
>         at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796)
>         at
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348)
>         at
> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1989)
>         at
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1913)
>         at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796)
>         at
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348)
>         at
> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1989)
>         at
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1913)
>         at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796)
>         at
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348)
>         at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
>         at java.util.HashMap.readObject(HashMap.java:1155)
>         at sun.reflect.GeneratedMethodAccessor57.invoke(Unknown Source)
>         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at
> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
>         at
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1891)
>         at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796)
>         at
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348)
>         at
> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1989)
>         at
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1913)
>         at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796)
>         at
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348)
>         at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
>         at java.util.ArrayList.readObject(ArrayList.java:733)
>         at sun.reflect.GeneratedMethodAccessor291.invoke(Unknown Source)
>         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at
> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
>         at
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1891)
>         at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796)
>         at
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348)
>         at
> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1989)
>         at
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1913)
>         at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796)
>         at
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348)
>         at
> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1989)
>         at
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1913)
>         at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796)
>         at
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348)
>         at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
>         at java.util.HashMap.readObject(HashMap.java:1155)
>         at sun.reflect.GeneratedMethodAccessor57.invoke(Unknown Source)
>         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at
> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
>         at
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1891)
>         at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796)
>         at
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348)
>         at
> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1989)
>         at
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1913)
>         at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796)
>         at
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348)
>         at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
>         at java.util.ArrayList.readObject(ArrayList.java:733)
>         at sun.reflect.GeneratedMethodAccessor291.invoke(Unknown Source)
>         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at
> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
>         at
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1891)
>         at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796)
>         at
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348)
>         at
> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1989)
>         at
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1913)
>         at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796)
>         at
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348)
>         at
> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1989)
>         at
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1913)
>         at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1796)
>         at
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348)
>         at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
>         at
> com.sun.jini.jeri.internal.runtime.Util.unmarshalValue(Util.java:221)
>         at
> net.jini.jeri.BasicInvocationHandler.unmarshalReturn(BasicInvocationHandler.java:1242)
>         at
> net.jini.jeri.BasicInvocationHandler.invokeRemoteMethodOnce(BasicInvocationHandler.java:825)
>         ... 25 more
>

Reply via email to