Hi
  I understand that and I apologize. But I got desperate. We are
embarking on this huge project and counting on MINA big time. But this
error was a big hurdle in designing the prototype. I need the support
from u guys as we go along . To give you an estimate of what MINA has to
go through is, it has to handle some 30 msgs per sec, listen
simultaneously to some 300 to 400 ports, and ve to b fast enough to
remain unnoticed as a proxy server. :).
 
 Regds
 Monajit

-----Original Message-----
From: Maarten Bosteels [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, March 06, 2007 4:25 AM
To: [email protected]
Subject: Re:
SOS!!!.............org.apache.mina.common.BufferDataException: Object
length should be greater than 4: 0

Monajit,

I am glad that you solved your problem.
But please note that using a subject that starts with
"SOS!!!............."
is not very polite and certainly does not guarantee a quicker response.

http://www.catb.org/~esr/faqs/smart-questions.html#bespecific

Maarten

On 3/5/07, Monajit Choudhury <[EMAIL PROTECTED]> wrote:
> Hi
>  I think I found where the problem is. Its not the problem with
serialization. After going through the codecs of the sumup example I
found that the whole object is not sent across.Only the primitive types
are encoded and passed along.Thats the reason when I do a
byteBuffer.getObject() I used to get a size 0 buffer.I modified the
codecs in the sumup example to pass the whole object and it worked.I
mean atleast I stopped getting the error :-).
> Regds
> Monajit
>
>
> -----Original Message-----
> From: Monajit Choudhury [mailto:[EMAIL PROTECTED]
> Sent: Mon 3/5/2007 4:39 PM
> To: [email protected]
> Subject: RE:
SOS!!!.............org.apache.mina.common.BufferDataException: Object
length should be greater than 4: 0
>
>
> Thanks for the response Mark. Right now I am not worrying about the
latency.But what I want to avoid in doing in my proxy is serializing and
deserializing. I want to do that in a separate thread.The sumup client
is using a codec to serialize the object and the server deserializes
it.The proxy just acts as a tunnel.It forwards the resquests to the
server without any intervention and this model works.Even if I want to
add a codec into the proxy, where do I add it?
>
> -----Original Message-----
> From: Mark Webb [mailto:[EMAIL PROTECTED]
> Sent: Mon 3/5/2007 4:08 PM
> To: [email protected]
> Subject: Re:
SOS!!!.............org.apache.mina.common.BufferDataException: Object
length should be greater than 4: 0
>
> I have not worked much with serialization and mina, but I think you
need
> that codec to get things working.  My advice would be to get things
working,
> and then worry about latency/performance.
>
> On 3/5/07, Monajit Choudhury <[EMAIL PROTECTED]> wrote:
> >
> >
> > Not within the proxy. I am using the example proxy as is. We plan to
use
> > this proxy in the production system(after modifying it to handle
large
> > amount of traffic), so I wanted to  keep the latency to a minimum.I
dump
> > the whole byteBuffer in an async queue.Another thread goes thru the
queue
> > and deserializes the objects,and this is where it fails.
> >
> > Regds
> > Monajit
> >
> > -----Original Message-----
> > From: Mark Webb [mailto:[EMAIL PROTECTED]
> > Sent: Mon 3/5/2007 3:52 PM
> > To: [email protected]
> > Subject: Re:
> > SOS!!!.............org.apache.mina.common.BufferDataException:
Object length
> > should be greater than 4: 0
> >
> > Are you using a serialization codec ?
> >
> >
> > On 3/5/07, Monajit Choudhury <[EMAIL PROTECTED]> wrote:
> > > Hi Mark
> > >  Thanks a lot for your response. Still I am  getting the same
> > error.Hereis what I am doing now.
> > >
> > > public void onMessage(Message message) {
> > >                 // TODO we do the processing here. It might be the
we
> > link
> > the request recording stuffs here
> > >                 MessageObject bb =
> > (MessageObject)message.getMessageContent();
> > >         SimpleProtocolDecoderOutput pd = new
> > SimpleProtocolDecoderOutput(
> > bb.getSession(),null);
> > >
> > >         try {
> > >                         new
> >
ObjectSerializationCodecFactory().getDecoder().decode(bb.getSession(),
> > bb.getByteBuffer(), pd);
> > >                 } catch (Exception e2) {
> > >                         // TODO Auto-generated catch block
> > >                         e2.printStackTrace();
> > >                 }
> > >         pd.flush();
> > >         }
> > >
> > > The Message object wraps the ByteBuffer object within itself.The
size of
> > the stream is 0 and I think this is the problem. The client is able
to
> > receive the correct responses from the server via the proxy.This
means the
> > communication stream is working fine. I think I am not tapping the
right
> > stream.Any thoughts?
> > >
> > > Regds
> > > Monajit
> > >
> > >
> > > -----Original Message-----
> > > From: Mark Webb [mailto:[EMAIL PROTECTED]
> > > Sent: Mon 3/5/2007 2:41 PM
> > > To: [email protected]
> > > Subject: Re:
> > SOS!!!.............org.apache.mina.common.BufferDataException:
Object
> > length
> > should be greater than 4: 0
> > >
> > > Try this...
> > >
> > >
http://www.nabble.com/RE%3A-ObjectSerialization-problem-p7830060.html
> > >
> > >
> > > On 3/5/07, Monajit Choudhury <[EMAIL PROTECTED]> wrote:
> > > >
> > > > Hi
> > > > I am trying to mix the proxy example with the sumup example.So
all
> > client
> > > > requests in the in the sumup example goes via this proxy.In the
proxy
> > I
> > > > have a async queuing mechanism by which I dump the requests in a
queue
> > and
> > > > desirialize it in a separate thread.Now here is the problem...
> > > > This is the method in AbstractProxyIoHandler.
> > > > public void messageReceived( IoSession session, Object message )
> > throws
> > > > Exception
> > > >     {
> > > >
> > > >         ByteBuffer rb = ( ByteBuffer ) message;
> > > >         ByteBuffer wb = ByteBuffer.allocate( rb.remaining() );
> > > >         rb.mark();
> > > >         wb.put( rb );
> > > >         wb.flip();
> > > >         ServiceContext ctx = ServiceContext.getContext();
> > > >         Queue queue1 = (Queue) ctx.lookup("QM1.RecordingQ");
> > > >         Message msg = new MessageImpl(wb);
> > > >         queue1.pushIntoQueue(msg);
> > > >        ( ( IoSession ) session.getAttachment() ).write( wb );
> > > >         rb.reset();
> > > >         SessionLog.info( session, rb.getString(
CHARSET.newDecoder() )
> > );
> > > >     }
> > > >
> > > > Now when i deque the object and do a wb.getObject(), i get the
> > following
> > > > exception.
> > > > org.apache.mina.common.BufferDataException: Object length should
be
> > > > greater than 4: 0
> > > >
> > > > Instead of this, the client gets the response properly.I think
the
> > proxy
> > > > example was written to work with strings only. WHat changes do I
need
> > to
> > > > make in the proxy to make it work with Objects?Please HELP!!!!
> > > >
> > > >
> > > > Regds
> > > > Monajit
> > > >
> > >
> > >
> > >
> > > --
> > > ..Cheers
> > > Mark
> > >
> > >
> >
> >
> >
> > --
> > ..Cheers
> > Mark
> >
> >
>
>
> --
> ..Cheers
> Mark
>
>
>

Reply via email to