You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mina.apache.org by tiandike <wh...@21cn.com> on 2007/11/14 03:44:42 UTC

a question about codec.serialization

I use ObjectSerializationCodecFactory in my mina server and client app .

I define a Map field in my requestmessage and in this Map i put   Object[]
args and  Class[] clazzes; 
in the first bytebuffer  I use Long ,but the seconde bytebuffer i use long.

I find first bytebuffer can be sent to mina server, but the second can't .
first
DirectBuffer[pos=0 lim=440 cap=512: 00 00 01 B4 AC ED 00 05 73 72 00 34 63
6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75 6E 64 65 72 62 69 72 64
2E 6D 65 73 73 61 67 65 2E 44 65 66 61 75 6C 74 55 49 43 52 65 71 75 65 73
74 78 72 00 35 63 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75 6E 64
65 72 62 69 72 64 2E 6D 65 73 73 61 67 65 2E 41 62 73 74 72 61 63 74 55 49
43 4D 65 73 73 61 67 65 78 70 73 72 00 11 6A 61 76 61 2E 75 74 69 6C 2E 48
61 73 68 4D 61 70 78 70 3F 40 00 00 00 00 00 0C 77 08 00 00 00 10 00 00 00
01 74 00 0D 5F 64 65 66 61 75 6C 74 4D 6F 64 65 6C 73 72 00 26 63 6F 6D 2E
74 61 6F 62 61 6F 2E 75 69 63 2E 63 6C 61 77 2E 63 6C 69 65 6E 74 2E 43 6C
61 77 43 6F 6E 74 65 78 74 78 70 74 00 07 67 65 74 44 61 74 61 75 72 00 13
5B 4C 6A 61 76 61 2E 6C 61 6E 67 2E 4F 62 6A 65 63 74 3B 78 70 00 00 00 02
73 72 00 0E 6A 61 76 61 2E 6C 61 6E 67 2E 4C 6F 6E 67 78 72 00 10 6A 61 76
61 2E 6C 61 6E 67 2E 4E 75 6D 62 65 72 78 70 00 00 00 00 07 39 89 4C 74 00
12 64 61 74 61 2D 69 6E 66 6F 2D 75 73 65 72 64 61 74 61 75 72 00 12 5B 4C
6A 61 76 61 2E 6C 61 6E 67 2E 43 6C 61 73 73 3B 78 70 00 00 00 02 76 72 00
04 6C 6F 6E 67 78 70 76 72 00 10 6A 61 76 61 2E 6C 61 6E 67 2E 53 74 72 69
6E 67 78 70 78 73 71 00 7E 00 0B 00 00 00 00 00 00 00 01 01 70 74 00 08 75
73 65 72 64 61 74 61 74 00 0F 75 73 65 72 44 61 74 61 53 65 72 76 69 63 65
70 70]
second
DirectBuffer[pos=0 lim=436 cap=512: 00 00 01 B0 AC ED 00 05 73 72 00 34 63
6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75 6E 64 65 72 62 69 72 64
2E 6D 65 73 73 61 67 65 2E 44 65 66 61 75 6C 74 55 49 43 52 65 71 75 65 73
74 78 72 00 35 63 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75 6E 64
65 72 62 69 72 64 2E 6D 65 73 73 61 67 65 2E 41 62 73 74 72 61 63 74 55 49
43 4D 65 73 73 61 67 65 78 70 73 72 00 11 6A 61 76 61 2E 75 74 69 6C 2E 48
61 73 68 4D 61 70 78 70 3F 40 00 00 00 00 00 0C 77 08 00 00 00 10 00 00 00
01 74 00 0D 5F 64 65 66 61 75 6C 74 4D 6F 64 65 6C 73 72 00 26 63 6F 6D 2E
74 61 6F 62 61 6F 2E 75 69 63 2E 63 6C 61 77 2E 63 6C 69 65 6E 74 2E 43 6C
61 77 43 6F 6E 74 65 78 74 78 70 74 00 07 67 65 74 44 61 74 61 75 72 00 13
5B 4C 6A 61 76 61 2E 6C 61 6E 67 2E 4F 62 6A 65 63 74 3B 78 70 00 00 00 02
73 72 00 0E 6A 61 76 61 2E 6C 61 6E 67 2E 4C 6F 6E 67 78 72 00 10 6A 61 76
61 2E 6C 61 6E 67 2E 4E 75 6D 62 65 72 78 70 00 00 00 00 07 39 89 4C 74 00
12 64 61 74 61 2D 69 6E 66 6F 2D 75 73 65 72 64 61 74 61 75 72 00 12 5B 4C
6A 61 76 61 2E 6C 61 6E 67 2E 43 6C 61 73 73 3B 78 70 00 00 00 02 76 71 00
7E 00 0B 76 72 00 10 6A 61 76 61 2E 6C 61 6E 67 2E 53 74 72 69 6E 67 78 70
78 73 71 00 7E 00 0B 00 00 00 00 00 00 00 01 01 70 74 00 08 75 73 65 72 64
61 74 61 74 00 0F 75 73 65 72 44 61 74 61 53 65 72 76 69 63 65 70 70]

/////////////////////
in SocketIoProcessor  doFlush(SocketSessionImpl session) , i find the code
below are executed in these two condition.

 if (key.isWritable()) {
                    writtenBytes += ch.write(buf.buf());
                }

I don't know why! it's so strange!

-- 
View this message in context: http://www.nabble.com/a-question-about-codec.serialization-tf4801841s16868.html#a13738965
Sent from the Apache MINA Support Forum mailing list archive at Nabble.com.


Re: a question about codec.serialization

Posted by Mark <el...@gmail.com>.
Not sure how autoboxing works with serialization, but I would try using a
Long object to wrap your long primitive.

On Nov 14, 2007 11:00 PM, tiandike <wh...@21cn.com> wrote:

>
> My request has a Map and put a Class[] params in this map , and I put a
> long
> class in the params.
>
> I find exception is in the code ByteBuffer.getObject:
>
> String className = readUTF();
>                    Class<?> clazz = Class
>                            .forName(className, true, classLoader);
>                    return ObjectStreamClass.lookup(clazz);
>
> when className  is long ,Class.forName throws exception:
>
>
>
>
> Trustin Lee wrote:
> >
> > Please provide me some code that reproduces your problem.
> >
> > Thanks in advance,
> > Trustin
> >
> > On Nov 14, 2007 11:59 AM, tiandike <wh...@21cn.com> wrote:
> >>
> >> I debug in my mina server :
> >> and find exception:
> >>
> >> org.apache.mina.common.BufferDataException:
> >> java.io.InvalidClassException:
> >> failed to read class descriptor
> >>         at
> >> org.apache.mina.common.ByteBuffer.getObject(ByteBuffer.java:1487)
> >>         at
> >>
> org.apache.mina.filter.codec.serialization.ObjectSerializationDecoder.doDecode
> (ObjectSerializationDecoder.java:92)
> >>         at
> >> org.apache.mina.filter.codec.CumulativeProtocolDecoder.decode(
> CumulativeProtocolDecoder.java:133)
> >>         at
> >> org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(
> ProtocolCodecFilter.java:159)
> >>         at
> >>
> org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived
> (AbstractIoFilterChain.java:299)
> >>         at
> >> org.apache.mina.common.support.AbstractIoFilterChain.access$1100(
> AbstractIoFilterChain.java:53)
> >>         at
> >>
> org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived
> (AbstractIoFilterChain.java:648)
> >>         at
> >>
> org.apache.mina.common.support.AbstractIoFilterChain$HeadFilter.messageReceived
> (AbstractIoFilterChain.java:499)
> >>         at
> >>
> org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived
> (AbstractIoFilterChain.java:299)
> >>         at
> >>
> org.apache.mina.common.support.AbstractIoFilterChain.fireMessageReceived(
> AbstractIoFilterChain.java:293)
> >>         at
> >> org.apache.mina.transport.socket.nio.SocketIoProcessor.read(
> SocketIoProcessor.java:218)
> >>         at
> >> org.apache.mina.transport.socket.nio.SocketIoProcessor.process(
> SocketIoProcessor.java:188)
> >>         at
> >> org.apache.mina.transport.socket.nio.SocketIoProcessor.access$400(
> SocketIoProcessor.java:44)
> >>         at
> >> org.apache.mina.transport.socket.nio.SocketIoProcessor$Worker.run(
> SocketIoProcessor.java:464)
> >>         at
> >> org.apache.mina.util.NamePreservingRunnable.run(
> NamePreservingRunnable.java:51)
> >>         at
> >> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(
> ThreadPoolExecutor.java:885)
> >>         at
> >> java.util.concurrent.ThreadPoolExecutor$Worker.run(
> ThreadPoolExecutor.java:907)
> >>         at java.lang.Thread.run(Thread.java:619)
> >> Caused by: java.io.InvalidClassException: failed to read class
> descriptor
> >>         at
> >> java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1567)
> >>         at
> >> java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
> >>         at
> >> java.io.ObjectInputStream.readClass(ObjectInputStream.java:1462)
> >>         at
> >> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1312)
> >>         at
> >> java.io.ObjectInputStream.readArray(ObjectInputStream.java:1667)
> >>         at
> >> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323)
> >>         at
> >> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java
> :1945)
> >>         at
> >> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
> >>         at
> >> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java
> :1753)
> >>         at
> >> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
> >>         at
> >> java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
> >>         at java.util.HashMap.readObject(HashMap.java:1030)
> >>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >>         at
> >> sun.reflect.NativeMethodAccessorImpl.invoke(
> NativeMethodAccessorImpl.java:39)
> >>         at
> >> sun.reflect.DelegatingMethodAccessorImpl.invoke(
> DelegatingMethodAccessorImpl.java:25)
> >>         at java.lang.reflect.Method.invoke(Method.java:597)
> >>         at
> >> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
> >>         at
> >> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1846)
> >>         at
> >> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java
> :1753)
> >>         at
> >> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
> >>         at
> >> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java
> :1945)
> >>         at
> >> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
> >>         at
> >> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java
> :1753)
> >>         at
> >> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
> >>         at
> >> java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
> >>         at
> >> org.apache.mina.common.ByteBuffer.getObject(ByteBuffer.java:1485)
> >>         ... 17 more
> >> Caused by: java.lang.ClassNotFoundException: long
> >>         at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
> >>         at java.security.AccessController.doPrivileged(Native Method)
> >>         at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
> >>         at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
> >>         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java
> :276)
> >>         at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
> >>         at java.lang.ClassLoader.loadClassInternal(ClassLoader.java
> :319)
> >>         at java.lang.Class.forName0(Native Method)
> >>         at java.lang.Class.forName(Class.java:247)
> >>         at
> >> org.apache.mina.common.ByteBuffer$3.readClassDescriptor(ByteBuffer.java
> :1480)
> >>         at
> >> java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1565)
> >>         ... 42 more
> >>
> >>
> >>
> >>
> >> tiandike wrote:
> >> >
> >> > I use ObjectSerializationCodecFactory in my mina server and client
> app
> >> .
> >> >
> >> > I define a Map field in my requestmessage and in this Map i put
> >> Object[]
> >> > args and  Class[] clazzes;
> >> > in the first bytebuffer  I use Long ,but the seconde bytebuffer i use
> >> > long.
> >> >
> >> > I find first bytebuffer can be sent to mina server, but the second
> >> can't .
> >> > first
> >> > DirectBuffer[pos=0 lim=440 cap=512: 00 00 01 B4 AC ED 00 05 73 72 00
> 34
> >> 63
> >> > 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75 6E 64 65 72 62 69
> 72
> >> 64
> >> > 2E 6D 65 73 73 61 67 65 2E 44 65 66 61 75 6C 74 55 49 43 52 65 71 75
> 65
> >> 73
> >> > 74 78 72 00 35 63 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75
> 6E
> >> 64
> >> > 65 72 62 69 72 64 2E 6D 65 73 73 61 67 65 2E 41 62 73 74 72 61 63 74
> 55
> >> 49
> >> > 43 4D 65 73 73 61 67 65 78 70 73 72 00 11 6A 61 76 61 2E 75 74 69 6C
> 2E
> >> 48
> >> > 61 73 68 4D 61 70 78 70 3F 40 00 00 00 00 00 0C 77 08 00 00 00 10 00
> 00
> >> 00
> >> > 01 74 00 0D 5F 64 65 66 61 75 6C 74 4D 6F 64 65 6C 73 72 00 26 63 6F
> 6D
> >> 2E
> >> > 74 61 6F 62 61 6F 2E 75 69 63 2E 63 6C 61 77 2E 63 6C 69 65 6E 74 2E
> 43
> >> 6C
> >> > 61 77 43 6F 6E 74 65 78 74 78 70 74 00 07 67 65 74 44 61 74 61 75 72
> 00
> >> 13
> >> > 5B 4C 6A 61 76 61 2E 6C 61 6E 67 2E 4F 62 6A 65 63 74 3B 78 70 00 00
> 00
> >> 02
> >> > 73 72 00 0E 6A 61 76 61 2E 6C 61 6E 67 2E 4C 6F 6E 67 78 72 00 10 6A
> 61
> >> 76
> >> > 61 2E 6C 61 6E 67 2E 4E 75 6D 62 65 72 78 70 00 00 00 00 07 39 89 4C
> 74
> >> 00
> >> > 12 64 61 74 61 2D 69 6E 66 6F 2D 75 73 65 72 64 61 74 61 75 72 00 12
> 5B
> >> 4C
> >> > 6A 61 76 61 2E 6C 61 6E 67 2E 43 6C 61 73 73 3B 78 70 00 00 00 02 76
> 72
> >> 00
> >> > 04 6C 6F 6E 67 78 70 76 72 00 10 6A 61 76 61 2E 6C 61 6E 67 2E 53 74
> 72
> >> 69
> >> > 6E 67 78 70 78 73 71 00 7E 00 0B 00 00 00 00 00 00 00 01 01 70 74 00
> 08
> >> 75
> >> > 73 65 72 64 61 74 61 74 00 0F 75 73 65 72 44 61 74 61 53 65 72 76 69
> 63
> >> 65
> >> > 70 70]
> >> > second
> >> > DirectBuffer[pos=0 lim=436 cap=512: 00 00 01 B0 AC ED 00 05 73 72 00
> 34
> >> 63
> >> > 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75 6E 64 65 72 62 69
> 72
> >> 64
> >> > 2E 6D 65 73 73 61 67 65 2E 44 65 66 61 75 6C 74 55 49 43 52 65 71 75
> 65
> >> 73
> >> > 74 78 72 00 35 63 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75
> 6E
> >> 64
> >> > 65 72 62 69 72 64 2E 6D 65 73 73 61 67 65 2E 41 62 73 74 72 61 63 74
> 55
> >> 49
> >> > 43 4D 65 73 73 61 67 65 78 70 73 72 00 11 6A 61 76 61 2E 75 74 69 6C
> 2E
> >> 48
> >> > 61 73 68 4D 61 70 78 70 3F 40 00 00 00 00 00 0C 77 08 00 00 00 10 00
> 00
> >> 00
> >> > 01 74 00 0D 5F 64 65 66 61 75 6C 74 4D 6F 64 65 6C 73 72 00 26 63 6F
> 6D
> >> 2E
> >> > 74 61 6F 62 61 6F 2E 75 69 63 2E 63 6C 61 77 2E 63 6C 69 65 6E 74 2E
> 43
> >> 6C
> >> > 61 77 43 6F 6E 74 65 78 74 78 70 74 00 07 67 65 74 44 61 74 61 75 72
> 00
> >> 13
> >> > 5B 4C 6A 61 76 61 2E 6C 61 6E 67 2E 4F 62 6A 65 63 74 3B 78 70 00 00
> 00
> >> 02
> >> > 73 72 00 0E 6A 61 76 61 2E 6C 61 6E 67 2E 4C 6F 6E 67 78 72 00 10 6A
> 61
> >> 76
> >> > 61 2E 6C 61 6E 67 2E 4E 75 6D 62 65 72 78 70 00 00 00 00 07 39 89 4C
> 74
> >> 00
> >> > 12 64 61 74 61 2D 69 6E 66 6F 2D 75 73 65 72 64 61 74 61 75 72 00 12
> 5B
> >> 4C
> >> > 6A 61 76 61 2E 6C 61 6E 67 2E 43 6C 61 73 73 3B 78 70 00 00 00 02 76
> 71
> >> 00
> >> > 7E 00 0B 76 72 00 10 6A 61 76 61 2E 6C 61 6E 67 2E 53 74 72 69 6E 67
> 78
> >> 70
> >> > 78 73 71 00 7E 00 0B 00 00 00 00 00 00 00 01 01 70 74 00 08 75 73 65
> 72
> >> 64
> >> > 61 74 61 74 00 0F 75 73 65 72 44 61 74 61 53 65 72 76 69 63 65 70 70]
> >> >
> >> > /////////////////////
> >> > in SocketIoProcessor  doFlush(SocketSessionImpl session) , i find the
> >> code
> >> > below are executed in these two condition.
> >> >
> >> >  if (key.isWritable()) {
> >> >                     writtenBytes += ch.write(buf.buf());
> >> >                 }
> >> >
> >> > I don't know why! it's so strange!
> >> >
> >> >
> >>
> >> --
> >> View this message in context:
> >>
> http://www.nabble.com/a-question-about-codec.serialization-tf4801841s16868.html#a13739039
> >>
> >> Sent from the Apache MINA Support Forum mailing list archive at
> >> Nabble.com.
> >>
> >>
> >
> >
> >
> > --
> > what we call human nature is actually human habit
> > --
> > http://gleamynode.net/
> > --
> > PGP Key ID: 0x0255ECA6
> >
> >
>
> --
> View this message in context:
> http://www.nabble.com/a-question-about-codec.serialization-tf4801841s16868.html#a13760922
> Sent from the Apache MINA Support Forum mailing list archive at Nabble.com
> .
>
>


-- 
--------------------------------
The adjuration to be "normal" seems shockingly repellent to me; I see
neither hope nor comfort in sinking to that low level. I think it is
ignorance that makes people think of abnormality only with horror and allows
them to remain undismayed at the proximity of "normal" to average and
mediocre. For surely anyone who achieves anything is, essentially, abnormal.
    Dr. Karl Menninger

Re: a question about codec.serialization

Posted by Trustin Lee <tr...@gmail.com>.
Fixed.  Please try the latest snapshot.

Cheers,
Trustin

On Nov 16, 2007 9:30 AM, Trustin Lee <tr...@gmail.com> wrote:
> For better performance.  Now I figured out what your problem is.  Let
> me try to fix it.
>
> Thanks!
> Trustin
>
>
> On Nov 15, 2007 6:45 PM, tiandike <wh...@21cn.com> wrote:
> >
> > I look at sourcecode  in mina ByteBuffer:
> >
> >  ObjectInputStream in = new ObjectInputStream(asInputStream()) {
> >                 protected ObjectStreamClass readClassDescriptor()
> >                         throws IOException, ClassNotFoundException {
> >                     String className = readUTF();
> >                     Class<?> clazz = Class
> >                             .forName(className, true, classLoader);
> >                     return ObjectStreamClass.lookup(clazz);
> >                 }
> >             }
> >
> >
> > why overrides ObjectInputStream.readClassDescriptor()??
> >
> >
> > tiandike wrote:
> > >
> > > My request has a Map and put a Class[] params in this map , and I put a
> > > long  class in the params.
> > >
> > >                               Class[] c= {long.class,int.class};
> > >               Map map = new HashMap();
> > >               map.put(1, c);
> > >
> > >
> > > I find exception is in the code ByteBuffer.getObject:
> > >
> > > String className = readUTF();
> > >                     Class<?> clazz = Class
> > >                             .forName(className, true, classLoader);
> > >                     return ObjectStreamClass.lookup(clazz);
> > >
> > > when className  is long ,Class.forName throws exception:
> > >
> > > my mina version is 1.1.4
> > >
> > >
> >
> > > Trustin Lee wrote:
> > >>
> > >> Please provide me some code that reproduces your problem.
> > >>
> > >> Thanks in advance,
> > >> Trustin
> > >>
> > >> On Nov 14, 2007 11:59 AM, tiandike <wh...@21cn.com> wrote:
> > >>>
> > >>> I debug in my mina server :
> > >>> and find exception:
> > >>>
> > >>> org.apache.mina.common.BufferDataException:
> > >>> java.io.InvalidClassException:
> > >>> failed to read class descriptor
> > >>>         at
> > >>> org.apache.mina.common.ByteBuffer.getObject(ByteBuffer.java:1487)
> > >>>         at
> > >>> org.apache.mina.filter.codec.serialization.ObjectSerializationDecoder.doDecode(ObjectSerializationDecoder.java:92)
> > >>>         at
> > >>> org.apache.mina.filter.codec.CumulativeProtocolDecoder.decode(CumulativeProtocolDecoder.java:133)
> > >>>         at
> > >>> org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:159)
> > >>>         at
> > >>> org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
> > >>>         at
> > >>> org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53)
> > >>>         at
> > >>> org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648)
> > >>>         at
> > >>> org.apache.mina.common.support.AbstractIoFilterChain$HeadFilter.messageReceived(AbstractIoFilterChain.java:499)
> > >>>         at
> > >>> org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
> > >>>         at
> > >>> org.apache.mina.common.support.AbstractIoFilterChain.fireMessageReceived(AbstractIoFilterChain.java:293)
> > >>>         at
> > >>> org.apache.mina.transport.socket.nio.SocketIoProcessor.read(SocketIoProcessor.java:218)
> > >>>         at
> > >>> org.apache.mina.transport.socket.nio.SocketIoProcessor.process(SocketIoProcessor.java:188)
> > >>>         at
> > >>> org.apache.mina.transport.socket.nio.SocketIoProcessor.access$400(SocketIoProcessor.java:44)
> > >>>         at
> > >>> org.apache.mina.transport.socket.nio.SocketIoProcessor$Worker.run(SocketIoProcessor.java:464)
> > >>>         at
> > >>> org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)
> > >>>         at
> > >>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
> > >>>         at
> > >>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
> > >>>         at java.lang.Thread.run(Thread.java:619)
> > >>> Caused by: java.io.InvalidClassException: failed to read class
> > >>> descriptor
> > >>>         at
> > >>> java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1567)
> > >>>         at
> > >>> java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
> > >>>         at
> > >>> java.io.ObjectInputStream.readClass(ObjectInputStream.java:1462)
> > >>>         at
> > >>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1312)
> > >>>         at
> > >>> java.io.ObjectInputStream.readArray(ObjectInputStream.java:1667)
> > >>>         at
> > >>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323)
> > >>>         at
> > >>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
> > >>>         at
> > >>> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
> > >>>         at
> > >>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
> > >>>         at
> > >>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
> > >>>         at
> > >>> java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
> > >>>         at java.util.HashMap.readObject(HashMap.java:1030)
> > >>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > >>>         at
> > >>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> > >>>         at
> > >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> > >>>         at java.lang.reflect.Method.invoke(Method.java:597)
> > >>>         at
> > >>> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
> > >>>         at
> > >>> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1846)
> > >>>         at
> > >>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
> > >>>         at
> > >>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
> > >>>         at
> > >>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
> > >>>         at
> > >>> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
> > >>>         at
> > >>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
> > >>>         at
> > >>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
> > >>>         at
> > >>> java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
> > >>>         at
> > >>> org.apache.mina.common.ByteBuffer.getObject(ByteBuffer.java:1485)
> > >>>         ... 17 more
> > >>> Caused by: java.lang.ClassNotFoundException: long
> > >>>         at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
> > >>>         at java.security.AccessController.doPrivileged(Native Method)
> > >>>         at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
> > >>>         at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
> > >>>         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
> > >>>         at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
> > >>>         at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
> > >>>         at java.lang.Class.forName0(Native Method)
> > >>>         at java.lang.Class.forName(Class.java:247)
> > >>>         at
> > >>> org.apache.mina.common.ByteBuffer$3.readClassDescriptor(ByteBuffer.java:1480)
> > >>>         at
> > >>> java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1565)
> > >>>         ... 42 more
> > >>>
> > >>>
> > >>>
> > >>>
> > >>> tiandike wrote:
> > >>> >
> > >>> > I use ObjectSerializationCodecFactory in my mina server and client app
> > >>> .
> > >>> >
> > >>> > I define a Map field in my requestmessage and in this Map i put
> > >>> Object[]
> > >>> > args and  Class[] clazzes;
> > >>> > in the first bytebuffer  I use Long ,but the seconde bytebuffer i use
> > >>> > long.
> > >>> >
> > >>> > I find first bytebuffer can be sent to mina server, but the second
> > >>> can't .
> > >>> > first
> > >>> > DirectBuffer[pos=0 lim=440 cap=512: 00 00 01 B4 AC ED 00 05 73 72 00
> > >>> 34 63
> > >>> > 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75 6E 64 65 72 62 69
> > >>> 72 64
> > >>> > 2E 6D 65 73 73 61 67 65 2E 44 65 66 61 75 6C 74 55 49 43 52 65 71 75
> > >>> 65 73
> > >>> > 74 78 72 00 35 63 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75
> > >>> 6E 64
> > >>> > 65 72 62 69 72 64 2E 6D 65 73 73 61 67 65 2E 41 62 73 74 72 61 63 74
> > >>> 55 49
> > >>> > 43 4D 65 73 73 61 67 65 78 70 73 72 00 11 6A 61 76 61 2E 75 74 69 6C
> > >>> 2E 48
> > >>> > 61 73 68 4D 61 70 78 70 3F 40 00 00 00 00 00 0C 77 08 00 00 00 10 00
> > >>> 00 00
> > >>> > 01 74 00 0D 5F 64 65 66 61 75 6C 74 4D 6F 64 65 6C 73 72 00 26 63 6F
> > >>> 6D 2E
> > >>> > 74 61 6F 62 61 6F 2E 75 69 63 2E 63 6C 61 77 2E 63 6C 69 65 6E 74 2E
> > >>> 43 6C
> > >>> > 61 77 43 6F 6E 74 65 78 74 78 70 74 00 07 67 65 74 44 61 74 61 75 72
> > >>> 00 13
> > >>> > 5B 4C 6A 61 76 61 2E 6C 61 6E 67 2E 4F 62 6A 65 63 74 3B 78 70 00 00
> > >>> 00 02
> > >>> > 73 72 00 0E 6A 61 76 61 2E 6C 61 6E 67 2E 4C 6F 6E 67 78 72 00 10 6A
> > >>> 61 76
> > >>> > 61 2E 6C 61 6E 67 2E 4E 75 6D 62 65 72 78 70 00 00 00 00 07 39 89 4C
> > >>> 74 00
> > >>> > 12 64 61 74 61 2D 69 6E 66 6F 2D 75 73 65 72 64 61 74 61 75 72 00 12
> > >>> 5B 4C
> > >>> > 6A 61 76 61 2E 6C 61 6E 67 2E 43 6C 61 73 73 3B 78 70 00 00 00 02 76
> > >>> 72 00
> > >>> > 04 6C 6F 6E 67 78 70 76 72 00 10 6A 61 76 61 2E 6C 61 6E 67 2E 53 74
> > >>> 72 69
> > >>> > 6E 67 78 70 78 73 71 00 7E 00 0B 00 00 00 00 00 00 00 01 01 70 74 00
> > >>> 08 75
> > >>> > 73 65 72 64 61 74 61 74 00 0F 75 73 65 72 44 61 74 61 53 65 72 76 69
> > >>> 63 65
> > >>> > 70 70]
> > >>> > second
> > >>> > DirectBuffer[pos=0 lim=436 cap=512: 00 00 01 B0 AC ED 00 05 73 72 00
> > >>> 34 63
> > >>> > 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75 6E 64 65 72 62 69
> > >>> 72 64
> > >>> > 2E 6D 65 73 73 61 67 65 2E 44 65 66 61 75 6C 74 55 49 43 52 65 71 75
> > >>> 65 73
> > >>> > 74 78 72 00 35 63 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75
> > >>> 6E 64
> > >>> > 65 72 62 69 72 64 2E 6D 65 73 73 61 67 65 2E 41 62 73 74 72 61 63 74
> > >>> 55 49
> > >>> > 43 4D 65 73 73 61 67 65 78 70 73 72 00 11 6A 61 76 61 2E 75 74 69 6C
> > >>> 2E 48
> > >>> > 61 73 68 4D 61 70 78 70 3F 40 00 00 00 00 00 0C 77 08 00 00 00 10 00
> > >>> 00 00
> > >>> > 01 74 00 0D 5F 64 65 66 61 75 6C 74 4D 6F 64 65 6C 73 72 00 26 63 6F
> > >>> 6D 2E
> > >>> > 74 61 6F 62 61 6F 2E 75 69 63 2E 63 6C 61 77 2E 63 6C 69 65 6E 74 2E
> > >>> 43 6C
> > >>> > 61 77 43 6F 6E 74 65 78 74 78 70 74 00 07 67 65 74 44 61 74 61 75 72
> > >>> 00 13
> > >>> > 5B 4C 6A 61 76 61 2E 6C 61 6E 67 2E 4F 62 6A 65 63 74 3B 78 70 00 00
> > >>> 00 02
> > >>> > 73 72 00 0E 6A 61 76 61 2E 6C 61 6E 67 2E 4C 6F 6E 67 78 72 00 10 6A
> > >>> 61 76
> > >>> > 61 2E 6C 61 6E 67 2E 4E 75 6D 62 65 72 78 70 00 00 00 00 07 39 89 4C
> > >>> 74 00
> > >>> > 12 64 61 74 61 2D 69 6E 66 6F 2D 75 73 65 72 64 61 74 61 75 72 00 12
> > >>> 5B 4C
> > >>> > 6A 61 76 61 2E 6C 61 6E 67 2E 43 6C 61 73 73 3B 78 70 00 00 00 02 76
> > >>> 71 00
> > >>> > 7E 00 0B 76 72 00 10 6A 61 76 61 2E 6C 61 6E 67 2E 53 74 72 69 6E 67
> > >>> 78 70
> > >>> > 78 73 71 00 7E 00 0B 00 00 00 00 00 00 00 01 01 70 74 00 08 75 73 65
> > >>> 72 64
> > >>> > 61 74 61 74 00 0F 75 73 65 72 44 61 74 61 53 65 72 76 69 63 65 70 70]
> > >>> >
> > >>> > /////////////////////
> > >>> > in SocketIoProcessor  doFlush(SocketSessionImpl session) , i find the
> > >>> code
> > >>> > below are executed in these two condition.
> > >>> >
> > >>> >  if (key.isWritable()) {
> > >>> >                     writtenBytes += ch.write(buf.buf());
> > >>> >                 }
> > >>> >
> > >>> > I don't know why! it's so strange!
> > >>> >
> > >>> >
> > >>>
> > >>> --
> > >>> View this message in context:
> > >>> http://www.nabble.com/a-question-about-codec.serialization-tf4801841s16868.html#a13739039
> > >>>
> > >>> Sent from the Apache MINA Support Forum mailing list archive at
> > >>> Nabble.com.
> > >>>
> > >>>
> > >>
> > >>
> > >>
> > >> --
> > >> what we call human nature is actually human habit
> > >> --
> > >> http://gleamynode.net/
> > >> --
> > >> PGP Key ID: 0x0255ECA6
> > >>
> > >>
> > >
> > >
> >
> > --
> > View this message in context: http://www.nabble.com/a-question-about-codec.serialization-tf4801841s16868.html#a13764446
> >
> > Sent from the Apache MINA Support Forum mailing list archive at Nabble.com.
> >
> >
>
>
>
> --
> what we call human nature is actually human habit
> --
> http://gleamynode.net/
> --
> PGP Key ID: 0x0255ECA6
>



-- 
what we call human nature is actually human habit
--
http://gleamynode.net/
--
PGP Key ID: 0x0255ECA6

Re: a question about codec.serialization

Posted by Trustin Lee <tr...@gmail.com>.
For better performance.  Now I figured out what your problem is.  Let
me try to fix it.

Thanks!
Trustin

On Nov 15, 2007 6:45 PM, tiandike <wh...@21cn.com> wrote:
>
> I look at sourcecode  in mina ByteBuffer:
>
>  ObjectInputStream in = new ObjectInputStream(asInputStream()) {
>                 protected ObjectStreamClass readClassDescriptor()
>                         throws IOException, ClassNotFoundException {
>                     String className = readUTF();
>                     Class<?> clazz = Class
>                             .forName(className, true, classLoader);
>                     return ObjectStreamClass.lookup(clazz);
>                 }
>             }
>
>
> why overrides ObjectInputStream.readClassDescriptor()??
>
>
> tiandike wrote:
> >
> > My request has a Map and put a Class[] params in this map , and I put a
> > long  class in the params.
> >
> >                               Class[] c= {long.class,int.class};
> >               Map map = new HashMap();
> >               map.put(1, c);
> >
> >
> > I find exception is in the code ByteBuffer.getObject:
> >
> > String className = readUTF();
> >                     Class<?> clazz = Class
> >                             .forName(className, true, classLoader);
> >                     return ObjectStreamClass.lookup(clazz);
> >
> > when className  is long ,Class.forName throws exception:
> >
> > my mina version is 1.1.4
> >
> >
>
> > Trustin Lee wrote:
> >>
> >> Please provide me some code that reproduces your problem.
> >>
> >> Thanks in advance,
> >> Trustin
> >>
> >> On Nov 14, 2007 11:59 AM, tiandike <wh...@21cn.com> wrote:
> >>>
> >>> I debug in my mina server :
> >>> and find exception:
> >>>
> >>> org.apache.mina.common.BufferDataException:
> >>> java.io.InvalidClassException:
> >>> failed to read class descriptor
> >>>         at
> >>> org.apache.mina.common.ByteBuffer.getObject(ByteBuffer.java:1487)
> >>>         at
> >>> org.apache.mina.filter.codec.serialization.ObjectSerializationDecoder.doDecode(ObjectSerializationDecoder.java:92)
> >>>         at
> >>> org.apache.mina.filter.codec.CumulativeProtocolDecoder.decode(CumulativeProtocolDecoder.java:133)
> >>>         at
> >>> org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:159)
> >>>         at
> >>> org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
> >>>         at
> >>> org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53)
> >>>         at
> >>> org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648)
> >>>         at
> >>> org.apache.mina.common.support.AbstractIoFilterChain$HeadFilter.messageReceived(AbstractIoFilterChain.java:499)
> >>>         at
> >>> org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
> >>>         at
> >>> org.apache.mina.common.support.AbstractIoFilterChain.fireMessageReceived(AbstractIoFilterChain.java:293)
> >>>         at
> >>> org.apache.mina.transport.socket.nio.SocketIoProcessor.read(SocketIoProcessor.java:218)
> >>>         at
> >>> org.apache.mina.transport.socket.nio.SocketIoProcessor.process(SocketIoProcessor.java:188)
> >>>         at
> >>> org.apache.mina.transport.socket.nio.SocketIoProcessor.access$400(SocketIoProcessor.java:44)
> >>>         at
> >>> org.apache.mina.transport.socket.nio.SocketIoProcessor$Worker.run(SocketIoProcessor.java:464)
> >>>         at
> >>> org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)
> >>>         at
> >>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
> >>>         at
> >>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
> >>>         at java.lang.Thread.run(Thread.java:619)
> >>> Caused by: java.io.InvalidClassException: failed to read class
> >>> descriptor
> >>>         at
> >>> java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1567)
> >>>         at
> >>> java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
> >>>         at
> >>> java.io.ObjectInputStream.readClass(ObjectInputStream.java:1462)
> >>>         at
> >>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1312)
> >>>         at
> >>> java.io.ObjectInputStream.readArray(ObjectInputStream.java:1667)
> >>>         at
> >>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323)
> >>>         at
> >>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
> >>>         at
> >>> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
> >>>         at
> >>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
> >>>         at
> >>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
> >>>         at
> >>> java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
> >>>         at java.util.HashMap.readObject(HashMap.java:1030)
> >>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >>>         at
> >>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> >>>         at
> >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> >>>         at java.lang.reflect.Method.invoke(Method.java:597)
> >>>         at
> >>> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
> >>>         at
> >>> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1846)
> >>>         at
> >>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
> >>>         at
> >>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
> >>>         at
> >>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
> >>>         at
> >>> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
> >>>         at
> >>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
> >>>         at
> >>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
> >>>         at
> >>> java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
> >>>         at
> >>> org.apache.mina.common.ByteBuffer.getObject(ByteBuffer.java:1485)
> >>>         ... 17 more
> >>> Caused by: java.lang.ClassNotFoundException: long
> >>>         at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
> >>>         at java.security.AccessController.doPrivileged(Native Method)
> >>>         at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
> >>>         at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
> >>>         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
> >>>         at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
> >>>         at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
> >>>         at java.lang.Class.forName0(Native Method)
> >>>         at java.lang.Class.forName(Class.java:247)
> >>>         at
> >>> org.apache.mina.common.ByteBuffer$3.readClassDescriptor(ByteBuffer.java:1480)
> >>>         at
> >>> java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1565)
> >>>         ... 42 more
> >>>
> >>>
> >>>
> >>>
> >>> tiandike wrote:
> >>> >
> >>> > I use ObjectSerializationCodecFactory in my mina server and client app
> >>> .
> >>> >
> >>> > I define a Map field in my requestmessage and in this Map i put
> >>> Object[]
> >>> > args and  Class[] clazzes;
> >>> > in the first bytebuffer  I use Long ,but the seconde bytebuffer i use
> >>> > long.
> >>> >
> >>> > I find first bytebuffer can be sent to mina server, but the second
> >>> can't .
> >>> > first
> >>> > DirectBuffer[pos=0 lim=440 cap=512: 00 00 01 B4 AC ED 00 05 73 72 00
> >>> 34 63
> >>> > 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75 6E 64 65 72 62 69
> >>> 72 64
> >>> > 2E 6D 65 73 73 61 67 65 2E 44 65 66 61 75 6C 74 55 49 43 52 65 71 75
> >>> 65 73
> >>> > 74 78 72 00 35 63 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75
> >>> 6E 64
> >>> > 65 72 62 69 72 64 2E 6D 65 73 73 61 67 65 2E 41 62 73 74 72 61 63 74
> >>> 55 49
> >>> > 43 4D 65 73 73 61 67 65 78 70 73 72 00 11 6A 61 76 61 2E 75 74 69 6C
> >>> 2E 48
> >>> > 61 73 68 4D 61 70 78 70 3F 40 00 00 00 00 00 0C 77 08 00 00 00 10 00
> >>> 00 00
> >>> > 01 74 00 0D 5F 64 65 66 61 75 6C 74 4D 6F 64 65 6C 73 72 00 26 63 6F
> >>> 6D 2E
> >>> > 74 61 6F 62 61 6F 2E 75 69 63 2E 63 6C 61 77 2E 63 6C 69 65 6E 74 2E
> >>> 43 6C
> >>> > 61 77 43 6F 6E 74 65 78 74 78 70 74 00 07 67 65 74 44 61 74 61 75 72
> >>> 00 13
> >>> > 5B 4C 6A 61 76 61 2E 6C 61 6E 67 2E 4F 62 6A 65 63 74 3B 78 70 00 00
> >>> 00 02
> >>> > 73 72 00 0E 6A 61 76 61 2E 6C 61 6E 67 2E 4C 6F 6E 67 78 72 00 10 6A
> >>> 61 76
> >>> > 61 2E 6C 61 6E 67 2E 4E 75 6D 62 65 72 78 70 00 00 00 00 07 39 89 4C
> >>> 74 00
> >>> > 12 64 61 74 61 2D 69 6E 66 6F 2D 75 73 65 72 64 61 74 61 75 72 00 12
> >>> 5B 4C
> >>> > 6A 61 76 61 2E 6C 61 6E 67 2E 43 6C 61 73 73 3B 78 70 00 00 00 02 76
> >>> 72 00
> >>> > 04 6C 6F 6E 67 78 70 76 72 00 10 6A 61 76 61 2E 6C 61 6E 67 2E 53 74
> >>> 72 69
> >>> > 6E 67 78 70 78 73 71 00 7E 00 0B 00 00 00 00 00 00 00 01 01 70 74 00
> >>> 08 75
> >>> > 73 65 72 64 61 74 61 74 00 0F 75 73 65 72 44 61 74 61 53 65 72 76 69
> >>> 63 65
> >>> > 70 70]
> >>> > second
> >>> > DirectBuffer[pos=0 lim=436 cap=512: 00 00 01 B0 AC ED 00 05 73 72 00
> >>> 34 63
> >>> > 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75 6E 64 65 72 62 69
> >>> 72 64
> >>> > 2E 6D 65 73 73 61 67 65 2E 44 65 66 61 75 6C 74 55 49 43 52 65 71 75
> >>> 65 73
> >>> > 74 78 72 00 35 63 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75
> >>> 6E 64
> >>> > 65 72 62 69 72 64 2E 6D 65 73 73 61 67 65 2E 41 62 73 74 72 61 63 74
> >>> 55 49
> >>> > 43 4D 65 73 73 61 67 65 78 70 73 72 00 11 6A 61 76 61 2E 75 74 69 6C
> >>> 2E 48
> >>> > 61 73 68 4D 61 70 78 70 3F 40 00 00 00 00 00 0C 77 08 00 00 00 10 00
> >>> 00 00
> >>> > 01 74 00 0D 5F 64 65 66 61 75 6C 74 4D 6F 64 65 6C 73 72 00 26 63 6F
> >>> 6D 2E
> >>> > 74 61 6F 62 61 6F 2E 75 69 63 2E 63 6C 61 77 2E 63 6C 69 65 6E 74 2E
> >>> 43 6C
> >>> > 61 77 43 6F 6E 74 65 78 74 78 70 74 00 07 67 65 74 44 61 74 61 75 72
> >>> 00 13
> >>> > 5B 4C 6A 61 76 61 2E 6C 61 6E 67 2E 4F 62 6A 65 63 74 3B 78 70 00 00
> >>> 00 02
> >>> > 73 72 00 0E 6A 61 76 61 2E 6C 61 6E 67 2E 4C 6F 6E 67 78 72 00 10 6A
> >>> 61 76
> >>> > 61 2E 6C 61 6E 67 2E 4E 75 6D 62 65 72 78 70 00 00 00 00 07 39 89 4C
> >>> 74 00
> >>> > 12 64 61 74 61 2D 69 6E 66 6F 2D 75 73 65 72 64 61 74 61 75 72 00 12
> >>> 5B 4C
> >>> > 6A 61 76 61 2E 6C 61 6E 67 2E 43 6C 61 73 73 3B 78 70 00 00 00 02 76
> >>> 71 00
> >>> > 7E 00 0B 76 72 00 10 6A 61 76 61 2E 6C 61 6E 67 2E 53 74 72 69 6E 67
> >>> 78 70
> >>> > 78 73 71 00 7E 00 0B 00 00 00 00 00 00 00 01 01 70 74 00 08 75 73 65
> >>> 72 64
> >>> > 61 74 61 74 00 0F 75 73 65 72 44 61 74 61 53 65 72 76 69 63 65 70 70]
> >>> >
> >>> > /////////////////////
> >>> > in SocketIoProcessor  doFlush(SocketSessionImpl session) , i find the
> >>> code
> >>> > below are executed in these two condition.
> >>> >
> >>> >  if (key.isWritable()) {
> >>> >                     writtenBytes += ch.write(buf.buf());
> >>> >                 }
> >>> >
> >>> > I don't know why! it's so strange!
> >>> >
> >>> >
> >>>
> >>> --
> >>> View this message in context:
> >>> http://www.nabble.com/a-question-about-codec.serialization-tf4801841s16868.html#a13739039
> >>>
> >>> Sent from the Apache MINA Support Forum mailing list archive at
> >>> Nabble.com.
> >>>
> >>>
> >>
> >>
> >>
> >> --
> >> what we call human nature is actually human habit
> >> --
> >> http://gleamynode.net/
> >> --
> >> PGP Key ID: 0x0255ECA6
> >>
> >>
> >
> >
>
> --
> View this message in context: http://www.nabble.com/a-question-about-codec.serialization-tf4801841s16868.html#a13764446
>
> Sent from the Apache MINA Support Forum mailing list archive at Nabble.com.
>
>



-- 
what we call human nature is actually human habit
--
http://gleamynode.net/
--
PGP Key ID: 0x0255ECA6

Re: a question about codec.serialization

Posted by tiandike <wh...@21cn.com>.
I look at sourcecode  in mina ByteBuffer:

 ObjectInputStream in = new ObjectInputStream(asInputStream()) {
                protected ObjectStreamClass readClassDescriptor()
                        throws IOException, ClassNotFoundException {
                    String className = readUTF();
                    Class<?> clazz = Class
                            .forName(className, true, classLoader);
                    return ObjectStreamClass.lookup(clazz);
                }
            }


why overrides ObjectInputStream.readClassDescriptor()??


tiandike wrote:
> 
> My request has a Map and put a Class[] params in this map , and I put a
> long  class in the params. 
> 
>                               Class[] c= {long.class,int.class};
> 		Map map = new HashMap();
> 		map.put(1, c);
> 
> 
> I find exception is in the code ByteBuffer.getObject:
> 
> String className = readUTF();
>                     Class<?> clazz = Class
>                             .forName(className, true, classLoader);
>                     return ObjectStreamClass.lookup(clazz);
> 
> when className  is long ,Class.forName throws exception:
> 
> my mina version is 1.1.4
> 
> 
> Trustin Lee wrote:
>> 
>> Please provide me some code that reproduces your problem.
>> 
>> Thanks in advance,
>> Trustin
>> 
>> On Nov 14, 2007 11:59 AM, tiandike <wh...@21cn.com> wrote:
>>>
>>> I debug in my mina server :
>>> and find exception:
>>>
>>> org.apache.mina.common.BufferDataException:
>>> java.io.InvalidClassException:
>>> failed to read class descriptor
>>>         at
>>> org.apache.mina.common.ByteBuffer.getObject(ByteBuffer.java:1487)
>>>         at
>>> org.apache.mina.filter.codec.serialization.ObjectSerializationDecoder.doDecode(ObjectSerializationDecoder.java:92)
>>>         at
>>> org.apache.mina.filter.codec.CumulativeProtocolDecoder.decode(CumulativeProtocolDecoder.java:133)
>>>         at
>>> org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:159)
>>>         at
>>> org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
>>>         at
>>> org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53)
>>>         at
>>> org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648)
>>>         at
>>> org.apache.mina.common.support.AbstractIoFilterChain$HeadFilter.messageReceived(AbstractIoFilterChain.java:499)
>>>         at
>>> org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
>>>         at
>>> org.apache.mina.common.support.AbstractIoFilterChain.fireMessageReceived(AbstractIoFilterChain.java:293)
>>>         at
>>> org.apache.mina.transport.socket.nio.SocketIoProcessor.read(SocketIoProcessor.java:218)
>>>         at
>>> org.apache.mina.transport.socket.nio.SocketIoProcessor.process(SocketIoProcessor.java:188)
>>>         at
>>> org.apache.mina.transport.socket.nio.SocketIoProcessor.access$400(SocketIoProcessor.java:44)
>>>         at
>>> org.apache.mina.transport.socket.nio.SocketIoProcessor$Worker.run(SocketIoProcessor.java:464)
>>>         at
>>> org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)
>>>         at
>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
>>>         at
>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>>>         at java.lang.Thread.run(Thread.java:619)
>>> Caused by: java.io.InvalidClassException: failed to read class
>>> descriptor
>>>         at
>>> java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1567)
>>>         at
>>> java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
>>>         at
>>> java.io.ObjectInputStream.readClass(ObjectInputStream.java:1462)
>>>         at
>>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1312)
>>>         at
>>> java.io.ObjectInputStream.readArray(ObjectInputStream.java:1667)
>>>         at
>>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323)
>>>         at
>>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
>>>         at
>>> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
>>>         at
>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
>>>         at
>>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
>>>         at
>>> java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
>>>         at java.util.HashMap.readObject(HashMap.java:1030)
>>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>         at
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>>         at
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>>         at java.lang.reflect.Method.invoke(Method.java:597)
>>>         at
>>> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
>>>         at
>>> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1846)
>>>         at
>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
>>>         at
>>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
>>>         at
>>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
>>>         at
>>> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
>>>         at
>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
>>>         at
>>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
>>>         at
>>> java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
>>>         at
>>> org.apache.mina.common.ByteBuffer.getObject(ByteBuffer.java:1485)
>>>         ... 17 more
>>> Caused by: java.lang.ClassNotFoundException: long
>>>         at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
>>>         at java.security.AccessController.doPrivileged(Native Method)
>>>         at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
>>>         at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
>>>         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
>>>         at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
>>>         at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
>>>         at java.lang.Class.forName0(Native Method)
>>>         at java.lang.Class.forName(Class.java:247)
>>>         at
>>> org.apache.mina.common.ByteBuffer$3.readClassDescriptor(ByteBuffer.java:1480)
>>>         at
>>> java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1565)
>>>         ... 42 more
>>>
>>>
>>>
>>>
>>> tiandike wrote:
>>> >
>>> > I use ObjectSerializationCodecFactory in my mina server and client app
>>> .
>>> >
>>> > I define a Map field in my requestmessage and in this Map i put  
>>> Object[]
>>> > args and  Class[] clazzes;
>>> > in the first bytebuffer  I use Long ,but the seconde bytebuffer i use
>>> > long.
>>> >
>>> > I find first bytebuffer can be sent to mina server, but the second
>>> can't .
>>> > first
>>> > DirectBuffer[pos=0 lim=440 cap=512: 00 00 01 B4 AC ED 00 05 73 72 00
>>> 34 63
>>> > 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75 6E 64 65 72 62 69
>>> 72 64
>>> > 2E 6D 65 73 73 61 67 65 2E 44 65 66 61 75 6C 74 55 49 43 52 65 71 75
>>> 65 73
>>> > 74 78 72 00 35 63 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75
>>> 6E 64
>>> > 65 72 62 69 72 64 2E 6D 65 73 73 61 67 65 2E 41 62 73 74 72 61 63 74
>>> 55 49
>>> > 43 4D 65 73 73 61 67 65 78 70 73 72 00 11 6A 61 76 61 2E 75 74 69 6C
>>> 2E 48
>>> > 61 73 68 4D 61 70 78 70 3F 40 00 00 00 00 00 0C 77 08 00 00 00 10 00
>>> 00 00
>>> > 01 74 00 0D 5F 64 65 66 61 75 6C 74 4D 6F 64 65 6C 73 72 00 26 63 6F
>>> 6D 2E
>>> > 74 61 6F 62 61 6F 2E 75 69 63 2E 63 6C 61 77 2E 63 6C 69 65 6E 74 2E
>>> 43 6C
>>> > 61 77 43 6F 6E 74 65 78 74 78 70 74 00 07 67 65 74 44 61 74 61 75 72
>>> 00 13
>>> > 5B 4C 6A 61 76 61 2E 6C 61 6E 67 2E 4F 62 6A 65 63 74 3B 78 70 00 00
>>> 00 02
>>> > 73 72 00 0E 6A 61 76 61 2E 6C 61 6E 67 2E 4C 6F 6E 67 78 72 00 10 6A
>>> 61 76
>>> > 61 2E 6C 61 6E 67 2E 4E 75 6D 62 65 72 78 70 00 00 00 00 07 39 89 4C
>>> 74 00
>>> > 12 64 61 74 61 2D 69 6E 66 6F 2D 75 73 65 72 64 61 74 61 75 72 00 12
>>> 5B 4C
>>> > 6A 61 76 61 2E 6C 61 6E 67 2E 43 6C 61 73 73 3B 78 70 00 00 00 02 76
>>> 72 00
>>> > 04 6C 6F 6E 67 78 70 76 72 00 10 6A 61 76 61 2E 6C 61 6E 67 2E 53 74
>>> 72 69
>>> > 6E 67 78 70 78 73 71 00 7E 00 0B 00 00 00 00 00 00 00 01 01 70 74 00
>>> 08 75
>>> > 73 65 72 64 61 74 61 74 00 0F 75 73 65 72 44 61 74 61 53 65 72 76 69
>>> 63 65
>>> > 70 70]
>>> > second
>>> > DirectBuffer[pos=0 lim=436 cap=512: 00 00 01 B0 AC ED 00 05 73 72 00
>>> 34 63
>>> > 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75 6E 64 65 72 62 69
>>> 72 64
>>> > 2E 6D 65 73 73 61 67 65 2E 44 65 66 61 75 6C 74 55 49 43 52 65 71 75
>>> 65 73
>>> > 74 78 72 00 35 63 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75
>>> 6E 64
>>> > 65 72 62 69 72 64 2E 6D 65 73 73 61 67 65 2E 41 62 73 74 72 61 63 74
>>> 55 49
>>> > 43 4D 65 73 73 61 67 65 78 70 73 72 00 11 6A 61 76 61 2E 75 74 69 6C
>>> 2E 48
>>> > 61 73 68 4D 61 70 78 70 3F 40 00 00 00 00 00 0C 77 08 00 00 00 10 00
>>> 00 00
>>> > 01 74 00 0D 5F 64 65 66 61 75 6C 74 4D 6F 64 65 6C 73 72 00 26 63 6F
>>> 6D 2E
>>> > 74 61 6F 62 61 6F 2E 75 69 63 2E 63 6C 61 77 2E 63 6C 69 65 6E 74 2E
>>> 43 6C
>>> > 61 77 43 6F 6E 74 65 78 74 78 70 74 00 07 67 65 74 44 61 74 61 75 72
>>> 00 13
>>> > 5B 4C 6A 61 76 61 2E 6C 61 6E 67 2E 4F 62 6A 65 63 74 3B 78 70 00 00
>>> 00 02
>>> > 73 72 00 0E 6A 61 76 61 2E 6C 61 6E 67 2E 4C 6F 6E 67 78 72 00 10 6A
>>> 61 76
>>> > 61 2E 6C 61 6E 67 2E 4E 75 6D 62 65 72 78 70 00 00 00 00 07 39 89 4C
>>> 74 00
>>> > 12 64 61 74 61 2D 69 6E 66 6F 2D 75 73 65 72 64 61 74 61 75 72 00 12
>>> 5B 4C
>>> > 6A 61 76 61 2E 6C 61 6E 67 2E 43 6C 61 73 73 3B 78 70 00 00 00 02 76
>>> 71 00
>>> > 7E 00 0B 76 72 00 10 6A 61 76 61 2E 6C 61 6E 67 2E 53 74 72 69 6E 67
>>> 78 70
>>> > 78 73 71 00 7E 00 0B 00 00 00 00 00 00 00 01 01 70 74 00 08 75 73 65
>>> 72 64
>>> > 61 74 61 74 00 0F 75 73 65 72 44 61 74 61 53 65 72 76 69 63 65 70 70]
>>> >
>>> > /////////////////////
>>> > in SocketIoProcessor  doFlush(SocketSessionImpl session) , i find the
>>> code
>>> > below are executed in these two condition.
>>> >
>>> >  if (key.isWritable()) {
>>> >                     writtenBytes += ch.write(buf.buf());
>>> >                 }
>>> >
>>> > I don't know why! it's so strange!
>>> >
>>> >
>>>
>>> --
>>> View this message in context:
>>> http://www.nabble.com/a-question-about-codec.serialization-tf4801841s16868.html#a13739039
>>>
>>> Sent from the Apache MINA Support Forum mailing list archive at
>>> Nabble.com.
>>>
>>>
>> 
>> 
>> 
>> -- 
>> what we call human nature is actually human habit
>> --
>> http://gleamynode.net/
>> --
>> PGP Key ID: 0x0255ECA6
>> 
>> 
> 
> 

-- 
View this message in context: http://www.nabble.com/a-question-about-codec.serialization-tf4801841s16868.html#a13764446
Sent from the Apache MINA Support Forum mailing list archive at Nabble.com.


Re: a question about codec.serialization

Posted by tiandike <wh...@21cn.com>.
My request has a Map and put a Class[] params in this map , and I put a long 
class in the params.

I find exception is in the code ByteBuffer.getObject:

String className = readUTF();
                    Class<?> clazz = Class
                            .forName(className, true, classLoader);
                    return ObjectStreamClass.lookup(clazz);

when className  is long ,Class.forName throws exception:




Trustin Lee wrote:
> 
> Please provide me some code that reproduces your problem.
> 
> Thanks in advance,
> Trustin
> 
> On Nov 14, 2007 11:59 AM, tiandike <wh...@21cn.com> wrote:
>>
>> I debug in my mina server :
>> and find exception:
>>
>> org.apache.mina.common.BufferDataException:
>> java.io.InvalidClassException:
>> failed to read class descriptor
>>         at
>> org.apache.mina.common.ByteBuffer.getObject(ByteBuffer.java:1487)
>>         at
>> org.apache.mina.filter.codec.serialization.ObjectSerializationDecoder.doDecode(ObjectSerializationDecoder.java:92)
>>         at
>> org.apache.mina.filter.codec.CumulativeProtocolDecoder.decode(CumulativeProtocolDecoder.java:133)
>>         at
>> org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:159)
>>         at
>> org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
>>         at
>> org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53)
>>         at
>> org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648)
>>         at
>> org.apache.mina.common.support.AbstractIoFilterChain$HeadFilter.messageReceived(AbstractIoFilterChain.java:499)
>>         at
>> org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
>>         at
>> org.apache.mina.common.support.AbstractIoFilterChain.fireMessageReceived(AbstractIoFilterChain.java:293)
>>         at
>> org.apache.mina.transport.socket.nio.SocketIoProcessor.read(SocketIoProcessor.java:218)
>>         at
>> org.apache.mina.transport.socket.nio.SocketIoProcessor.process(SocketIoProcessor.java:188)
>>         at
>> org.apache.mina.transport.socket.nio.SocketIoProcessor.access$400(SocketIoProcessor.java:44)
>>         at
>> org.apache.mina.transport.socket.nio.SocketIoProcessor$Worker.run(SocketIoProcessor.java:464)
>>         at
>> org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)
>>         at
>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
>>         at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>>         at java.lang.Thread.run(Thread.java:619)
>> Caused by: java.io.InvalidClassException: failed to read class descriptor
>>         at
>> java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1567)
>>         at
>> java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
>>         at
>> java.io.ObjectInputStream.readClass(ObjectInputStream.java:1462)
>>         at
>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1312)
>>         at
>> java.io.ObjectInputStream.readArray(ObjectInputStream.java:1667)
>>         at
>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323)
>>         at
>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
>>         at
>> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
>>         at
>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
>>         at
>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
>>         at
>> java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
>>         at java.util.HashMap.readObject(HashMap.java:1030)
>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>         at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>         at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>         at java.lang.reflect.Method.invoke(Method.java:597)
>>         at
>> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
>>         at
>> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1846)
>>         at
>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
>>         at
>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
>>         at
>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
>>         at
>> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
>>         at
>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
>>         at
>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
>>         at
>> java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
>>         at
>> org.apache.mina.common.ByteBuffer.getObject(ByteBuffer.java:1485)
>>         ... 17 more
>> Caused by: java.lang.ClassNotFoundException: long
>>         at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
>>         at java.security.AccessController.doPrivileged(Native Method)
>>         at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
>>         at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
>>         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
>>         at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
>>         at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
>>         at java.lang.Class.forName0(Native Method)
>>         at java.lang.Class.forName(Class.java:247)
>>         at
>> org.apache.mina.common.ByteBuffer$3.readClassDescriptor(ByteBuffer.java:1480)
>>         at
>> java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1565)
>>         ... 42 more
>>
>>
>>
>>
>> tiandike wrote:
>> >
>> > I use ObjectSerializationCodecFactory in my mina server and client app
>> .
>> >
>> > I define a Map field in my requestmessage and in this Map i put  
>> Object[]
>> > args and  Class[] clazzes;
>> > in the first bytebuffer  I use Long ,but the seconde bytebuffer i use
>> > long.
>> >
>> > I find first bytebuffer can be sent to mina server, but the second
>> can't .
>> > first
>> > DirectBuffer[pos=0 lim=440 cap=512: 00 00 01 B4 AC ED 00 05 73 72 00 34
>> 63
>> > 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75 6E 64 65 72 62 69 72
>> 64
>> > 2E 6D 65 73 73 61 67 65 2E 44 65 66 61 75 6C 74 55 49 43 52 65 71 75 65
>> 73
>> > 74 78 72 00 35 63 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75 6E
>> 64
>> > 65 72 62 69 72 64 2E 6D 65 73 73 61 67 65 2E 41 62 73 74 72 61 63 74 55
>> 49
>> > 43 4D 65 73 73 61 67 65 78 70 73 72 00 11 6A 61 76 61 2E 75 74 69 6C 2E
>> 48
>> > 61 73 68 4D 61 70 78 70 3F 40 00 00 00 00 00 0C 77 08 00 00 00 10 00 00
>> 00
>> > 01 74 00 0D 5F 64 65 66 61 75 6C 74 4D 6F 64 65 6C 73 72 00 26 63 6F 6D
>> 2E
>> > 74 61 6F 62 61 6F 2E 75 69 63 2E 63 6C 61 77 2E 63 6C 69 65 6E 74 2E 43
>> 6C
>> > 61 77 43 6F 6E 74 65 78 74 78 70 74 00 07 67 65 74 44 61 74 61 75 72 00
>> 13
>> > 5B 4C 6A 61 76 61 2E 6C 61 6E 67 2E 4F 62 6A 65 63 74 3B 78 70 00 00 00
>> 02
>> > 73 72 00 0E 6A 61 76 61 2E 6C 61 6E 67 2E 4C 6F 6E 67 78 72 00 10 6A 61
>> 76
>> > 61 2E 6C 61 6E 67 2E 4E 75 6D 62 65 72 78 70 00 00 00 00 07 39 89 4C 74
>> 00
>> > 12 64 61 74 61 2D 69 6E 66 6F 2D 75 73 65 72 64 61 74 61 75 72 00 12 5B
>> 4C
>> > 6A 61 76 61 2E 6C 61 6E 67 2E 43 6C 61 73 73 3B 78 70 00 00 00 02 76 72
>> 00
>> > 04 6C 6F 6E 67 78 70 76 72 00 10 6A 61 76 61 2E 6C 61 6E 67 2E 53 74 72
>> 69
>> > 6E 67 78 70 78 73 71 00 7E 00 0B 00 00 00 00 00 00 00 01 01 70 74 00 08
>> 75
>> > 73 65 72 64 61 74 61 74 00 0F 75 73 65 72 44 61 74 61 53 65 72 76 69 63
>> 65
>> > 70 70]
>> > second
>> > DirectBuffer[pos=0 lim=436 cap=512: 00 00 01 B0 AC ED 00 05 73 72 00 34
>> 63
>> > 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75 6E 64 65 72 62 69 72
>> 64
>> > 2E 6D 65 73 73 61 67 65 2E 44 65 66 61 75 6C 74 55 49 43 52 65 71 75 65
>> 73
>> > 74 78 72 00 35 63 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75 6E
>> 64
>> > 65 72 62 69 72 64 2E 6D 65 73 73 61 67 65 2E 41 62 73 74 72 61 63 74 55
>> 49
>> > 43 4D 65 73 73 61 67 65 78 70 73 72 00 11 6A 61 76 61 2E 75 74 69 6C 2E
>> 48
>> > 61 73 68 4D 61 70 78 70 3F 40 00 00 00 00 00 0C 77 08 00 00 00 10 00 00
>> 00
>> > 01 74 00 0D 5F 64 65 66 61 75 6C 74 4D 6F 64 65 6C 73 72 00 26 63 6F 6D
>> 2E
>> > 74 61 6F 62 61 6F 2E 75 69 63 2E 63 6C 61 77 2E 63 6C 69 65 6E 74 2E 43
>> 6C
>> > 61 77 43 6F 6E 74 65 78 74 78 70 74 00 07 67 65 74 44 61 74 61 75 72 00
>> 13
>> > 5B 4C 6A 61 76 61 2E 6C 61 6E 67 2E 4F 62 6A 65 63 74 3B 78 70 00 00 00
>> 02
>> > 73 72 00 0E 6A 61 76 61 2E 6C 61 6E 67 2E 4C 6F 6E 67 78 72 00 10 6A 61
>> 76
>> > 61 2E 6C 61 6E 67 2E 4E 75 6D 62 65 72 78 70 00 00 00 00 07 39 89 4C 74
>> 00
>> > 12 64 61 74 61 2D 69 6E 66 6F 2D 75 73 65 72 64 61 74 61 75 72 00 12 5B
>> 4C
>> > 6A 61 76 61 2E 6C 61 6E 67 2E 43 6C 61 73 73 3B 78 70 00 00 00 02 76 71
>> 00
>> > 7E 00 0B 76 72 00 10 6A 61 76 61 2E 6C 61 6E 67 2E 53 74 72 69 6E 67 78
>> 70
>> > 78 73 71 00 7E 00 0B 00 00 00 00 00 00 00 01 01 70 74 00 08 75 73 65 72
>> 64
>> > 61 74 61 74 00 0F 75 73 65 72 44 61 74 61 53 65 72 76 69 63 65 70 70]
>> >
>> > /////////////////////
>> > in SocketIoProcessor  doFlush(SocketSessionImpl session) , i find the
>> code
>> > below are executed in these two condition.
>> >
>> >  if (key.isWritable()) {
>> >                     writtenBytes += ch.write(buf.buf());
>> >                 }
>> >
>> > I don't know why! it's so strange!
>> >
>> >
>>
>> --
>> View this message in context:
>> http://www.nabble.com/a-question-about-codec.serialization-tf4801841s16868.html#a13739039
>>
>> Sent from the Apache MINA Support Forum mailing list archive at
>> Nabble.com.
>>
>>
> 
> 
> 
> -- 
> what we call human nature is actually human habit
> --
> http://gleamynode.net/
> --
> PGP Key ID: 0x0255ECA6
> 
> 

-- 
View this message in context: http://www.nabble.com/a-question-about-codec.serialization-tf4801841s16868.html#a13760922
Sent from the Apache MINA Support Forum mailing list archive at Nabble.com.


Re: a question about codec.serialization

Posted by tiandike <wh...@21cn.com>.
My request has a Map and put a Class[] params in this map , and I put a long 
class in the params. 

                              Class[] c= {long.class,int.class};
		Map map = new HashMap();
		map.put(1, c);


I find exception is in the code ByteBuffer.getObject:

String className = readUTF();
                    Class<?> clazz = Class
                            .forName(className, true, classLoader);
                    return ObjectStreamClass.lookup(clazz);

when className  is long ,Class.forName throws exception:




Trustin Lee wrote:
> 
> Please provide me some code that reproduces your problem.
> 
> Thanks in advance,
> Trustin
> 
> On Nov 14, 2007 11:59 AM, tiandike <wh...@21cn.com> wrote:
>>
>> I debug in my mina server :
>> and find exception:
>>
>> org.apache.mina.common.BufferDataException:
>> java.io.InvalidClassException:
>> failed to read class descriptor
>>         at
>> org.apache.mina.common.ByteBuffer.getObject(ByteBuffer.java:1487)
>>         at
>> org.apache.mina.filter.codec.serialization.ObjectSerializationDecoder.doDecode(ObjectSerializationDecoder.java:92)
>>         at
>> org.apache.mina.filter.codec.CumulativeProtocolDecoder.decode(CumulativeProtocolDecoder.java:133)
>>         at
>> org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:159)
>>         at
>> org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
>>         at
>> org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53)
>>         at
>> org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648)
>>         at
>> org.apache.mina.common.support.AbstractIoFilterChain$HeadFilter.messageReceived(AbstractIoFilterChain.java:499)
>>         at
>> org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
>>         at
>> org.apache.mina.common.support.AbstractIoFilterChain.fireMessageReceived(AbstractIoFilterChain.java:293)
>>         at
>> org.apache.mina.transport.socket.nio.SocketIoProcessor.read(SocketIoProcessor.java:218)
>>         at
>> org.apache.mina.transport.socket.nio.SocketIoProcessor.process(SocketIoProcessor.java:188)
>>         at
>> org.apache.mina.transport.socket.nio.SocketIoProcessor.access$400(SocketIoProcessor.java:44)
>>         at
>> org.apache.mina.transport.socket.nio.SocketIoProcessor$Worker.run(SocketIoProcessor.java:464)
>>         at
>> org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)
>>         at
>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
>>         at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>>         at java.lang.Thread.run(Thread.java:619)
>> Caused by: java.io.InvalidClassException: failed to read class descriptor
>>         at
>> java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1567)
>>         at
>> java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
>>         at
>> java.io.ObjectInputStream.readClass(ObjectInputStream.java:1462)
>>         at
>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1312)
>>         at
>> java.io.ObjectInputStream.readArray(ObjectInputStream.java:1667)
>>         at
>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323)
>>         at
>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
>>         at
>> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
>>         at
>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
>>         at
>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
>>         at
>> java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
>>         at java.util.HashMap.readObject(HashMap.java:1030)
>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>         at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>         at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>         at java.lang.reflect.Method.invoke(Method.java:597)
>>         at
>> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
>>         at
>> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1846)
>>         at
>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
>>         at
>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
>>         at
>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
>>         at
>> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
>>         at
>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
>>         at
>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
>>         at
>> java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
>>         at
>> org.apache.mina.common.ByteBuffer.getObject(ByteBuffer.java:1485)
>>         ... 17 more
>> Caused by: java.lang.ClassNotFoundException: long
>>         at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
>>         at java.security.AccessController.doPrivileged(Native Method)
>>         at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
>>         at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
>>         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
>>         at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
>>         at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
>>         at java.lang.Class.forName0(Native Method)
>>         at java.lang.Class.forName(Class.java:247)
>>         at
>> org.apache.mina.common.ByteBuffer$3.readClassDescriptor(ByteBuffer.java:1480)
>>         at
>> java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1565)
>>         ... 42 more
>>
>>
>>
>>
>> tiandike wrote:
>> >
>> > I use ObjectSerializationCodecFactory in my mina server and client app
>> .
>> >
>> > I define a Map field in my requestmessage and in this Map i put  
>> Object[]
>> > args and  Class[] clazzes;
>> > in the first bytebuffer  I use Long ,but the seconde bytebuffer i use
>> > long.
>> >
>> > I find first bytebuffer can be sent to mina server, but the second
>> can't .
>> > first
>> > DirectBuffer[pos=0 lim=440 cap=512: 00 00 01 B4 AC ED 00 05 73 72 00 34
>> 63
>> > 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75 6E 64 65 72 62 69 72
>> 64
>> > 2E 6D 65 73 73 61 67 65 2E 44 65 66 61 75 6C 74 55 49 43 52 65 71 75 65
>> 73
>> > 74 78 72 00 35 63 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75 6E
>> 64
>> > 65 72 62 69 72 64 2E 6D 65 73 73 61 67 65 2E 41 62 73 74 72 61 63 74 55
>> 49
>> > 43 4D 65 73 73 61 67 65 78 70 73 72 00 11 6A 61 76 61 2E 75 74 69 6C 2E
>> 48
>> > 61 73 68 4D 61 70 78 70 3F 40 00 00 00 00 00 0C 77 08 00 00 00 10 00 00
>> 00
>> > 01 74 00 0D 5F 64 65 66 61 75 6C 74 4D 6F 64 65 6C 73 72 00 26 63 6F 6D
>> 2E
>> > 74 61 6F 62 61 6F 2E 75 69 63 2E 63 6C 61 77 2E 63 6C 69 65 6E 74 2E 43
>> 6C
>> > 61 77 43 6F 6E 74 65 78 74 78 70 74 00 07 67 65 74 44 61 74 61 75 72 00
>> 13
>> > 5B 4C 6A 61 76 61 2E 6C 61 6E 67 2E 4F 62 6A 65 63 74 3B 78 70 00 00 00
>> 02
>> > 73 72 00 0E 6A 61 76 61 2E 6C 61 6E 67 2E 4C 6F 6E 67 78 72 00 10 6A 61
>> 76
>> > 61 2E 6C 61 6E 67 2E 4E 75 6D 62 65 72 78 70 00 00 00 00 07 39 89 4C 74
>> 00
>> > 12 64 61 74 61 2D 69 6E 66 6F 2D 75 73 65 72 64 61 74 61 75 72 00 12 5B
>> 4C
>> > 6A 61 76 61 2E 6C 61 6E 67 2E 43 6C 61 73 73 3B 78 70 00 00 00 02 76 72
>> 00
>> > 04 6C 6F 6E 67 78 70 76 72 00 10 6A 61 76 61 2E 6C 61 6E 67 2E 53 74 72
>> 69
>> > 6E 67 78 70 78 73 71 00 7E 00 0B 00 00 00 00 00 00 00 01 01 70 74 00 08
>> 75
>> > 73 65 72 64 61 74 61 74 00 0F 75 73 65 72 44 61 74 61 53 65 72 76 69 63
>> 65
>> > 70 70]
>> > second
>> > DirectBuffer[pos=0 lim=436 cap=512: 00 00 01 B0 AC ED 00 05 73 72 00 34
>> 63
>> > 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75 6E 64 65 72 62 69 72
>> 64
>> > 2E 6D 65 73 73 61 67 65 2E 44 65 66 61 75 6C 74 55 49 43 52 65 71 75 65
>> 73
>> > 74 78 72 00 35 63 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75 6E
>> 64
>> > 65 72 62 69 72 64 2E 6D 65 73 73 61 67 65 2E 41 62 73 74 72 61 63 74 55
>> 49
>> > 43 4D 65 73 73 61 67 65 78 70 73 72 00 11 6A 61 76 61 2E 75 74 69 6C 2E
>> 48
>> > 61 73 68 4D 61 70 78 70 3F 40 00 00 00 00 00 0C 77 08 00 00 00 10 00 00
>> 00
>> > 01 74 00 0D 5F 64 65 66 61 75 6C 74 4D 6F 64 65 6C 73 72 00 26 63 6F 6D
>> 2E
>> > 74 61 6F 62 61 6F 2E 75 69 63 2E 63 6C 61 77 2E 63 6C 69 65 6E 74 2E 43
>> 6C
>> > 61 77 43 6F 6E 74 65 78 74 78 70 74 00 07 67 65 74 44 61 74 61 75 72 00
>> 13
>> > 5B 4C 6A 61 76 61 2E 6C 61 6E 67 2E 4F 62 6A 65 63 74 3B 78 70 00 00 00
>> 02
>> > 73 72 00 0E 6A 61 76 61 2E 6C 61 6E 67 2E 4C 6F 6E 67 78 72 00 10 6A 61
>> 76
>> > 61 2E 6C 61 6E 67 2E 4E 75 6D 62 65 72 78 70 00 00 00 00 07 39 89 4C 74
>> 00
>> > 12 64 61 74 61 2D 69 6E 66 6F 2D 75 73 65 72 64 61 74 61 75 72 00 12 5B
>> 4C
>> > 6A 61 76 61 2E 6C 61 6E 67 2E 43 6C 61 73 73 3B 78 70 00 00 00 02 76 71
>> 00
>> > 7E 00 0B 76 72 00 10 6A 61 76 61 2E 6C 61 6E 67 2E 53 74 72 69 6E 67 78
>> 70
>> > 78 73 71 00 7E 00 0B 00 00 00 00 00 00 00 01 01 70 74 00 08 75 73 65 72
>> 64
>> > 61 74 61 74 00 0F 75 73 65 72 44 61 74 61 53 65 72 76 69 63 65 70 70]
>> >
>> > /////////////////////
>> > in SocketIoProcessor  doFlush(SocketSessionImpl session) , i find the
>> code
>> > below are executed in these two condition.
>> >
>> >  if (key.isWritable()) {
>> >                     writtenBytes += ch.write(buf.buf());
>> >                 }
>> >
>> > I don't know why! it's so strange!
>> >
>> >
>>
>> --
>> View this message in context:
>> http://www.nabble.com/a-question-about-codec.serialization-tf4801841s16868.html#a13739039
>>
>> Sent from the Apache MINA Support Forum mailing list archive at
>> Nabble.com.
>>
>>
> 
> 
> 
> -- 
> what we call human nature is actually human habit
> --
> http://gleamynode.net/
> --
> PGP Key ID: 0x0255ECA6
> 
> 

-- 
View this message in context: http://www.nabble.com/a-question-about-codec.serialization-tf4801841s16868.html#a13760922
Sent from the Apache MINA Support Forum mailing list archive at Nabble.com.


Re: a question about codec.serialization

Posted by tiandike <wh...@21cn.com>.
My request has a Map and put a Class[] params in this map , and I put a long 
class in the params. 

                              Class[] c= {long.class,int.class};
		Map map = new HashMap();
		map.put(1, c);


I find exception is in the code ByteBuffer.getObject:

String className = readUTF();
                    Class<?> clazz = Class
                            .forName(className, true, classLoader);
                    return ObjectStreamClass.lookup(clazz);

when className  is long ,Class.forName throws exception:

my mina version is 1.1.4


Trustin Lee wrote:
> 
> Please provide me some code that reproduces your problem.
> 
> Thanks in advance,
> Trustin
> 
> On Nov 14, 2007 11:59 AM, tiandike <wh...@21cn.com> wrote:
>>
>> I debug in my mina server :
>> and find exception:
>>
>> org.apache.mina.common.BufferDataException:
>> java.io.InvalidClassException:
>> failed to read class descriptor
>>         at
>> org.apache.mina.common.ByteBuffer.getObject(ByteBuffer.java:1487)
>>         at
>> org.apache.mina.filter.codec.serialization.ObjectSerializationDecoder.doDecode(ObjectSerializationDecoder.java:92)
>>         at
>> org.apache.mina.filter.codec.CumulativeProtocolDecoder.decode(CumulativeProtocolDecoder.java:133)
>>         at
>> org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:159)
>>         at
>> org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
>>         at
>> org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53)
>>         at
>> org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648)
>>         at
>> org.apache.mina.common.support.AbstractIoFilterChain$HeadFilter.messageReceived(AbstractIoFilterChain.java:499)
>>         at
>> org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
>>         at
>> org.apache.mina.common.support.AbstractIoFilterChain.fireMessageReceived(AbstractIoFilterChain.java:293)
>>         at
>> org.apache.mina.transport.socket.nio.SocketIoProcessor.read(SocketIoProcessor.java:218)
>>         at
>> org.apache.mina.transport.socket.nio.SocketIoProcessor.process(SocketIoProcessor.java:188)
>>         at
>> org.apache.mina.transport.socket.nio.SocketIoProcessor.access$400(SocketIoProcessor.java:44)
>>         at
>> org.apache.mina.transport.socket.nio.SocketIoProcessor$Worker.run(SocketIoProcessor.java:464)
>>         at
>> org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)
>>         at
>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
>>         at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>>         at java.lang.Thread.run(Thread.java:619)
>> Caused by: java.io.InvalidClassException: failed to read class descriptor
>>         at
>> java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1567)
>>         at
>> java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
>>         at
>> java.io.ObjectInputStream.readClass(ObjectInputStream.java:1462)
>>         at
>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1312)
>>         at
>> java.io.ObjectInputStream.readArray(ObjectInputStream.java:1667)
>>         at
>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323)
>>         at
>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
>>         at
>> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
>>         at
>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
>>         at
>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
>>         at
>> java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
>>         at java.util.HashMap.readObject(HashMap.java:1030)
>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>         at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>         at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>         at java.lang.reflect.Method.invoke(Method.java:597)
>>         at
>> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
>>         at
>> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1846)
>>         at
>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
>>         at
>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
>>         at
>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
>>         at
>> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
>>         at
>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
>>         at
>> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
>>         at
>> java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
>>         at
>> org.apache.mina.common.ByteBuffer.getObject(ByteBuffer.java:1485)
>>         ... 17 more
>> Caused by: java.lang.ClassNotFoundException: long
>>         at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
>>         at java.security.AccessController.doPrivileged(Native Method)
>>         at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
>>         at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
>>         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
>>         at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
>>         at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
>>         at java.lang.Class.forName0(Native Method)
>>         at java.lang.Class.forName(Class.java:247)
>>         at
>> org.apache.mina.common.ByteBuffer$3.readClassDescriptor(ByteBuffer.java:1480)
>>         at
>> java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1565)
>>         ... 42 more
>>
>>
>>
>>
>> tiandike wrote:
>> >
>> > I use ObjectSerializationCodecFactory in my mina server and client app
>> .
>> >
>> > I define a Map field in my requestmessage and in this Map i put  
>> Object[]
>> > args and  Class[] clazzes;
>> > in the first bytebuffer  I use Long ,but the seconde bytebuffer i use
>> > long.
>> >
>> > I find first bytebuffer can be sent to mina server, but the second
>> can't .
>> > first
>> > DirectBuffer[pos=0 lim=440 cap=512: 00 00 01 B4 AC ED 00 05 73 72 00 34
>> 63
>> > 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75 6E 64 65 72 62 69 72
>> 64
>> > 2E 6D 65 73 73 61 67 65 2E 44 65 66 61 75 6C 74 55 49 43 52 65 71 75 65
>> 73
>> > 74 78 72 00 35 63 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75 6E
>> 64
>> > 65 72 62 69 72 64 2E 6D 65 73 73 61 67 65 2E 41 62 73 74 72 61 63 74 55
>> 49
>> > 43 4D 65 73 73 61 67 65 78 70 73 72 00 11 6A 61 76 61 2E 75 74 69 6C 2E
>> 48
>> > 61 73 68 4D 61 70 78 70 3F 40 00 00 00 00 00 0C 77 08 00 00 00 10 00 00
>> 00
>> > 01 74 00 0D 5F 64 65 66 61 75 6C 74 4D 6F 64 65 6C 73 72 00 26 63 6F 6D
>> 2E
>> > 74 61 6F 62 61 6F 2E 75 69 63 2E 63 6C 61 77 2E 63 6C 69 65 6E 74 2E 43
>> 6C
>> > 61 77 43 6F 6E 74 65 78 74 78 70 74 00 07 67 65 74 44 61 74 61 75 72 00
>> 13
>> > 5B 4C 6A 61 76 61 2E 6C 61 6E 67 2E 4F 62 6A 65 63 74 3B 78 70 00 00 00
>> 02
>> > 73 72 00 0E 6A 61 76 61 2E 6C 61 6E 67 2E 4C 6F 6E 67 78 72 00 10 6A 61
>> 76
>> > 61 2E 6C 61 6E 67 2E 4E 75 6D 62 65 72 78 70 00 00 00 00 07 39 89 4C 74
>> 00
>> > 12 64 61 74 61 2D 69 6E 66 6F 2D 75 73 65 72 64 61 74 61 75 72 00 12 5B
>> 4C
>> > 6A 61 76 61 2E 6C 61 6E 67 2E 43 6C 61 73 73 3B 78 70 00 00 00 02 76 72
>> 00
>> > 04 6C 6F 6E 67 78 70 76 72 00 10 6A 61 76 61 2E 6C 61 6E 67 2E 53 74 72
>> 69
>> > 6E 67 78 70 78 73 71 00 7E 00 0B 00 00 00 00 00 00 00 01 01 70 74 00 08
>> 75
>> > 73 65 72 64 61 74 61 74 00 0F 75 73 65 72 44 61 74 61 53 65 72 76 69 63
>> 65
>> > 70 70]
>> > second
>> > DirectBuffer[pos=0 lim=436 cap=512: 00 00 01 B0 AC ED 00 05 73 72 00 34
>> 63
>> > 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75 6E 64 65 72 62 69 72
>> 64
>> > 2E 6D 65 73 73 61 67 65 2E 44 65 66 61 75 6C 74 55 49 43 52 65 71 75 65
>> 73
>> > 74 78 72 00 35 63 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75 6E
>> 64
>> > 65 72 62 69 72 64 2E 6D 65 73 73 61 67 65 2E 41 62 73 74 72 61 63 74 55
>> 49
>> > 43 4D 65 73 73 61 67 65 78 70 73 72 00 11 6A 61 76 61 2E 75 74 69 6C 2E
>> 48
>> > 61 73 68 4D 61 70 78 70 3F 40 00 00 00 00 00 0C 77 08 00 00 00 10 00 00
>> 00
>> > 01 74 00 0D 5F 64 65 66 61 75 6C 74 4D 6F 64 65 6C 73 72 00 26 63 6F 6D
>> 2E
>> > 74 61 6F 62 61 6F 2E 75 69 63 2E 63 6C 61 77 2E 63 6C 69 65 6E 74 2E 43
>> 6C
>> > 61 77 43 6F 6E 74 65 78 74 78 70 74 00 07 67 65 74 44 61 74 61 75 72 00
>> 13
>> > 5B 4C 6A 61 76 61 2E 6C 61 6E 67 2E 4F 62 6A 65 63 74 3B 78 70 00 00 00
>> 02
>> > 73 72 00 0E 6A 61 76 61 2E 6C 61 6E 67 2E 4C 6F 6E 67 78 72 00 10 6A 61
>> 76
>> > 61 2E 6C 61 6E 67 2E 4E 75 6D 62 65 72 78 70 00 00 00 00 07 39 89 4C 74
>> 00
>> > 12 64 61 74 61 2D 69 6E 66 6F 2D 75 73 65 72 64 61 74 61 75 72 00 12 5B
>> 4C
>> > 6A 61 76 61 2E 6C 61 6E 67 2E 43 6C 61 73 73 3B 78 70 00 00 00 02 76 71
>> 00
>> > 7E 00 0B 76 72 00 10 6A 61 76 61 2E 6C 61 6E 67 2E 53 74 72 69 6E 67 78
>> 70
>> > 78 73 71 00 7E 00 0B 00 00 00 00 00 00 00 01 01 70 74 00 08 75 73 65 72
>> 64
>> > 61 74 61 74 00 0F 75 73 65 72 44 61 74 61 53 65 72 76 69 63 65 70 70]
>> >
>> > /////////////////////
>> > in SocketIoProcessor  doFlush(SocketSessionImpl session) , i find the
>> code
>> > below are executed in these two condition.
>> >
>> >  if (key.isWritable()) {
>> >                     writtenBytes += ch.write(buf.buf());
>> >                 }
>> >
>> > I don't know why! it's so strange!
>> >
>> >
>>
>> --
>> View this message in context:
>> http://www.nabble.com/a-question-about-codec.serialization-tf4801841s16868.html#a13739039
>>
>> Sent from the Apache MINA Support Forum mailing list archive at
>> Nabble.com.
>>
>>
> 
> 
> 
> -- 
> what we call human nature is actually human habit
> --
> http://gleamynode.net/
> --
> PGP Key ID: 0x0255ECA6
> 
> 

-- 
View this message in context: http://www.nabble.com/a-question-about-codec.serialization-tf4801841s16868.html#a13760922
Sent from the Apache MINA Support Forum mailing list archive at Nabble.com.


Re: a question about codec.serialization

Posted by Trustin Lee <tr...@gmail.com>.
Please provide me some code that reproduces your problem.

Thanks in advance,
Trustin

On Nov 14, 2007 11:59 AM, tiandike <wh...@21cn.com> wrote:
>
> I debug in my mina server :
> and find exception:
>
> org.apache.mina.common.BufferDataException: java.io.InvalidClassException:
> failed to read class descriptor
>         at org.apache.mina.common.ByteBuffer.getObject(ByteBuffer.java:1487)
>         at
> org.apache.mina.filter.codec.serialization.ObjectSerializationDecoder.doDecode(ObjectSerializationDecoder.java:92)
>         at
> org.apache.mina.filter.codec.CumulativeProtocolDecoder.decode(CumulativeProtocolDecoder.java:133)
>         at
> org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:159)
>         at
> org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
>         at
> org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53)
>         at
> org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648)
>         at
> org.apache.mina.common.support.AbstractIoFilterChain$HeadFilter.messageReceived(AbstractIoFilterChain.java:499)
>         at
> org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
>         at
> org.apache.mina.common.support.AbstractIoFilterChain.fireMessageReceived(AbstractIoFilterChain.java:293)
>         at
> org.apache.mina.transport.socket.nio.SocketIoProcessor.read(SocketIoProcessor.java:218)
>         at
> org.apache.mina.transport.socket.nio.SocketIoProcessor.process(SocketIoProcessor.java:188)
>         at
> org.apache.mina.transport.socket.nio.SocketIoProcessor.access$400(SocketIoProcessor.java:44)
>         at
> org.apache.mina.transport.socket.nio.SocketIoProcessor$Worker.run(SocketIoProcessor.java:464)
>         at
> org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>         at java.lang.Thread.run(Thread.java:619)
> Caused by: java.io.InvalidClassException: failed to read class descriptor
>         at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1567)
>         at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
>         at java.io.ObjectInputStream.readClass(ObjectInputStream.java:1462)
>         at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1312)
>         at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1667)
>         at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323)
>         at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
>         at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
>         at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
>         at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
>         at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
>         at java.util.HashMap.readObject(HashMap.java:1030)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:597)
>         at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
>         at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1846)
>         at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
>         at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
>         at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
>         at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
>         at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
>         at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
>         at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
>         at org.apache.mina.common.ByteBuffer.getObject(ByteBuffer.java:1485)
>         ... 17 more
> Caused by: java.lang.ClassNotFoundException: long
>         at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
>         at java.security.AccessController.doPrivileged(Native Method)
>         at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
>         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
>         at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
>         at java.lang.Class.forName0(Native Method)
>         at java.lang.Class.forName(Class.java:247)
>         at
> org.apache.mina.common.ByteBuffer$3.readClassDescriptor(ByteBuffer.java:1480)
>         at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1565)
>         ... 42 more
>
>
>
>
> tiandike wrote:
> >
> > I use ObjectSerializationCodecFactory in my mina server and client app .
> >
> > I define a Map field in my requestmessage and in this Map i put   Object[]
> > args and  Class[] clazzes;
> > in the first bytebuffer  I use Long ,but the seconde bytebuffer i use
> > long.
> >
> > I find first bytebuffer can be sent to mina server, but the second can't .
> > first
> > DirectBuffer[pos=0 lim=440 cap=512: 00 00 01 B4 AC ED 00 05 73 72 00 34 63
> > 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75 6E 64 65 72 62 69 72 64
> > 2E 6D 65 73 73 61 67 65 2E 44 65 66 61 75 6C 74 55 49 43 52 65 71 75 65 73
> > 74 78 72 00 35 63 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75 6E 64
> > 65 72 62 69 72 64 2E 6D 65 73 73 61 67 65 2E 41 62 73 74 72 61 63 74 55 49
> > 43 4D 65 73 73 61 67 65 78 70 73 72 00 11 6A 61 76 61 2E 75 74 69 6C 2E 48
> > 61 73 68 4D 61 70 78 70 3F 40 00 00 00 00 00 0C 77 08 00 00 00 10 00 00 00
> > 01 74 00 0D 5F 64 65 66 61 75 6C 74 4D 6F 64 65 6C 73 72 00 26 63 6F 6D 2E
> > 74 61 6F 62 61 6F 2E 75 69 63 2E 63 6C 61 77 2E 63 6C 69 65 6E 74 2E 43 6C
> > 61 77 43 6F 6E 74 65 78 74 78 70 74 00 07 67 65 74 44 61 74 61 75 72 00 13
> > 5B 4C 6A 61 76 61 2E 6C 61 6E 67 2E 4F 62 6A 65 63 74 3B 78 70 00 00 00 02
> > 73 72 00 0E 6A 61 76 61 2E 6C 61 6E 67 2E 4C 6F 6E 67 78 72 00 10 6A 61 76
> > 61 2E 6C 61 6E 67 2E 4E 75 6D 62 65 72 78 70 00 00 00 00 07 39 89 4C 74 00
> > 12 64 61 74 61 2D 69 6E 66 6F 2D 75 73 65 72 64 61 74 61 75 72 00 12 5B 4C
> > 6A 61 76 61 2E 6C 61 6E 67 2E 43 6C 61 73 73 3B 78 70 00 00 00 02 76 72 00
> > 04 6C 6F 6E 67 78 70 76 72 00 10 6A 61 76 61 2E 6C 61 6E 67 2E 53 74 72 69
> > 6E 67 78 70 78 73 71 00 7E 00 0B 00 00 00 00 00 00 00 01 01 70 74 00 08 75
> > 73 65 72 64 61 74 61 74 00 0F 75 73 65 72 44 61 74 61 53 65 72 76 69 63 65
> > 70 70]
> > second
> > DirectBuffer[pos=0 lim=436 cap=512: 00 00 01 B0 AC ED 00 05 73 72 00 34 63
> > 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75 6E 64 65 72 62 69 72 64
> > 2E 6D 65 73 73 61 67 65 2E 44 65 66 61 75 6C 74 55 49 43 52 65 71 75 65 73
> > 74 78 72 00 35 63 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75 6E 64
> > 65 72 62 69 72 64 2E 6D 65 73 73 61 67 65 2E 41 62 73 74 72 61 63 74 55 49
> > 43 4D 65 73 73 61 67 65 78 70 73 72 00 11 6A 61 76 61 2E 75 74 69 6C 2E 48
> > 61 73 68 4D 61 70 78 70 3F 40 00 00 00 00 00 0C 77 08 00 00 00 10 00 00 00
> > 01 74 00 0D 5F 64 65 66 61 75 6C 74 4D 6F 64 65 6C 73 72 00 26 63 6F 6D 2E
> > 74 61 6F 62 61 6F 2E 75 69 63 2E 63 6C 61 77 2E 63 6C 69 65 6E 74 2E 43 6C
> > 61 77 43 6F 6E 74 65 78 74 78 70 74 00 07 67 65 74 44 61 74 61 75 72 00 13
> > 5B 4C 6A 61 76 61 2E 6C 61 6E 67 2E 4F 62 6A 65 63 74 3B 78 70 00 00 00 02
> > 73 72 00 0E 6A 61 76 61 2E 6C 61 6E 67 2E 4C 6F 6E 67 78 72 00 10 6A 61 76
> > 61 2E 6C 61 6E 67 2E 4E 75 6D 62 65 72 78 70 00 00 00 00 07 39 89 4C 74 00
> > 12 64 61 74 61 2D 69 6E 66 6F 2D 75 73 65 72 64 61 74 61 75 72 00 12 5B 4C
> > 6A 61 76 61 2E 6C 61 6E 67 2E 43 6C 61 73 73 3B 78 70 00 00 00 02 76 71 00
> > 7E 00 0B 76 72 00 10 6A 61 76 61 2E 6C 61 6E 67 2E 53 74 72 69 6E 67 78 70
> > 78 73 71 00 7E 00 0B 00 00 00 00 00 00 00 01 01 70 74 00 08 75 73 65 72 64
> > 61 74 61 74 00 0F 75 73 65 72 44 61 74 61 53 65 72 76 69 63 65 70 70]
> >
> > /////////////////////
> > in SocketIoProcessor  doFlush(SocketSessionImpl session) , i find the code
> > below are executed in these two condition.
> >
> >  if (key.isWritable()) {
> >                     writtenBytes += ch.write(buf.buf());
> >                 }
> >
> > I don't know why! it's so strange!
> >
> >
>
> --
> View this message in context: http://www.nabble.com/a-question-about-codec.serialization-tf4801841s16868.html#a13739039
>
> Sent from the Apache MINA Support Forum mailing list archive at Nabble.com.
>
>



-- 
what we call human nature is actually human habit
--
http://gleamynode.net/
--
PGP Key ID: 0x0255ECA6

Re: a question about codec.serialization

Posted by tiandike <wh...@21cn.com>.
I debug in my mina server :
and find exception:

org.apache.mina.common.BufferDataException: java.io.InvalidClassException:
failed to read class descriptor
	at org.apache.mina.common.ByteBuffer.getObject(ByteBuffer.java:1487)
	at
org.apache.mina.filter.codec.serialization.ObjectSerializationDecoder.doDecode(ObjectSerializationDecoder.java:92)
	at
org.apache.mina.filter.codec.CumulativeProtocolDecoder.decode(CumulativeProtocolDecoder.java:133)
	at
org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:159)
	at
org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
	at
org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53)
	at
org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:648)
	at
org.apache.mina.common.support.AbstractIoFilterChain$HeadFilter.messageReceived(AbstractIoFilterChain.java:499)
	at
org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
	at
org.apache.mina.common.support.AbstractIoFilterChain.fireMessageReceived(AbstractIoFilterChain.java:293)
	at
org.apache.mina.transport.socket.nio.SocketIoProcessor.read(SocketIoProcessor.java:218)
	at
org.apache.mina.transport.socket.nio.SocketIoProcessor.process(SocketIoProcessor.java:188)
	at
org.apache.mina.transport.socket.nio.SocketIoProcessor.access$400(SocketIoProcessor.java:44)
	at
org.apache.mina.transport.socket.nio.SocketIoProcessor$Worker.run(SocketIoProcessor.java:464)
	at
org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)
	at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
	at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
	at java.lang.Thread.run(Thread.java:619)
Caused by: java.io.InvalidClassException: failed to read class descriptor
	at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1567)
	at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
	at java.io.ObjectInputStream.readClass(ObjectInputStream.java:1462)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1312)
	at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1667)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
	at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
	at java.util.HashMap.readObject(HashMap.java:1030)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1846)
	at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
	at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
	at org.apache.mina.common.ByteBuffer.getObject(ByteBuffer.java:1485)
	... 17 more
Caused by: java.lang.ClassNotFoundException: long
	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:247)
	at
org.apache.mina.common.ByteBuffer$3.readClassDescriptor(ByteBuffer.java:1480)
	at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1565)
	... 42 more



tiandike wrote:
> 
> I use ObjectSerializationCodecFactory in my mina server and client app .
> 
> I define a Map field in my requestmessage and in this Map i put   Object[]
> args and  Class[] clazzes; 
> in the first bytebuffer  I use Long ,but the seconde bytebuffer i use
> long.
> 
> I find first bytebuffer can be sent to mina server, but the second can't .
> first
> DirectBuffer[pos=0 lim=440 cap=512: 00 00 01 B4 AC ED 00 05 73 72 00 34 63
> 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75 6E 64 65 72 62 69 72 64
> 2E 6D 65 73 73 61 67 65 2E 44 65 66 61 75 6C 74 55 49 43 52 65 71 75 65 73
> 74 78 72 00 35 63 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75 6E 64
> 65 72 62 69 72 64 2E 6D 65 73 73 61 67 65 2E 41 62 73 74 72 61 63 74 55 49
> 43 4D 65 73 73 61 67 65 78 70 73 72 00 11 6A 61 76 61 2E 75 74 69 6C 2E 48
> 61 73 68 4D 61 70 78 70 3F 40 00 00 00 00 00 0C 77 08 00 00 00 10 00 00 00
> 01 74 00 0D 5F 64 65 66 61 75 6C 74 4D 6F 64 65 6C 73 72 00 26 63 6F 6D 2E
> 74 61 6F 62 61 6F 2E 75 69 63 2E 63 6C 61 77 2E 63 6C 69 65 6E 74 2E 43 6C
> 61 77 43 6F 6E 74 65 78 74 78 70 74 00 07 67 65 74 44 61 74 61 75 72 00 13
> 5B 4C 6A 61 76 61 2E 6C 61 6E 67 2E 4F 62 6A 65 63 74 3B 78 70 00 00 00 02
> 73 72 00 0E 6A 61 76 61 2E 6C 61 6E 67 2E 4C 6F 6E 67 78 72 00 10 6A 61 76
> 61 2E 6C 61 6E 67 2E 4E 75 6D 62 65 72 78 70 00 00 00 00 07 39 89 4C 74 00
> 12 64 61 74 61 2D 69 6E 66 6F 2D 75 73 65 72 64 61 74 61 75 72 00 12 5B 4C
> 6A 61 76 61 2E 6C 61 6E 67 2E 43 6C 61 73 73 3B 78 70 00 00 00 02 76 72 00
> 04 6C 6F 6E 67 78 70 76 72 00 10 6A 61 76 61 2E 6C 61 6E 67 2E 53 74 72 69
> 6E 67 78 70 78 73 71 00 7E 00 0B 00 00 00 00 00 00 00 01 01 70 74 00 08 75
> 73 65 72 64 61 74 61 74 00 0F 75 73 65 72 44 61 74 61 53 65 72 76 69 63 65
> 70 70]
> second
> DirectBuffer[pos=0 lim=436 cap=512: 00 00 01 B0 AC ED 00 05 73 72 00 34 63
> 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75 6E 64 65 72 62 69 72 64
> 2E 6D 65 73 73 61 67 65 2E 44 65 66 61 75 6C 74 55 49 43 52 65 71 75 65 73
> 74 78 72 00 35 63 6F 6D 2E 74 61 6F 62 61 6F 2E 75 69 63 2E 74 68 75 6E 64
> 65 72 62 69 72 64 2E 6D 65 73 73 61 67 65 2E 41 62 73 74 72 61 63 74 55 49
> 43 4D 65 73 73 61 67 65 78 70 73 72 00 11 6A 61 76 61 2E 75 74 69 6C 2E 48
> 61 73 68 4D 61 70 78 70 3F 40 00 00 00 00 00 0C 77 08 00 00 00 10 00 00 00
> 01 74 00 0D 5F 64 65 66 61 75 6C 74 4D 6F 64 65 6C 73 72 00 26 63 6F 6D 2E
> 74 61 6F 62 61 6F 2E 75 69 63 2E 63 6C 61 77 2E 63 6C 69 65 6E 74 2E 43 6C
> 61 77 43 6F 6E 74 65 78 74 78 70 74 00 07 67 65 74 44 61 74 61 75 72 00 13
> 5B 4C 6A 61 76 61 2E 6C 61 6E 67 2E 4F 62 6A 65 63 74 3B 78 70 00 00 00 02
> 73 72 00 0E 6A 61 76 61 2E 6C 61 6E 67 2E 4C 6F 6E 67 78 72 00 10 6A 61 76
> 61 2E 6C 61 6E 67 2E 4E 75 6D 62 65 72 78 70 00 00 00 00 07 39 89 4C 74 00
> 12 64 61 74 61 2D 69 6E 66 6F 2D 75 73 65 72 64 61 74 61 75 72 00 12 5B 4C
> 6A 61 76 61 2E 6C 61 6E 67 2E 43 6C 61 73 73 3B 78 70 00 00 00 02 76 71 00
> 7E 00 0B 76 72 00 10 6A 61 76 61 2E 6C 61 6E 67 2E 53 74 72 69 6E 67 78 70
> 78 73 71 00 7E 00 0B 00 00 00 00 00 00 00 01 01 70 74 00 08 75 73 65 72 64
> 61 74 61 74 00 0F 75 73 65 72 44 61 74 61 53 65 72 76 69 63 65 70 70]
> 
> /////////////////////
> in SocketIoProcessor  doFlush(SocketSessionImpl session) , i find the code
> below are executed in these two condition.
> 
>  if (key.isWritable()) {
>                     writtenBytes += ch.write(buf.buf());
>                 }
> 
> I don't know why! it's so strange!
> 
> 

-- 
View this message in context: http://www.nabble.com/a-question-about-codec.serialization-tf4801841s16868.html#a13739039
Sent from the Apache MINA Support Forum mailing list archive at Nabble.com.