Hibernate Objekte mit SIMON übertragen
Hallo Alex,
ich und meine Freunde haben folgendes Problem. Wir versuchen gerade (ich zweifle gerade ein bisschen dadran das das so ohne Probleme möglich ist) Objekte die wir via Hibernate aus einer Datenbank bekommen von einem Server mit SIMON an einen Client zu senden. Das Problem: Bei der Übertragung einiger Objekte kommt es zu seltsamen SIMON-Exceptions die wir uns nicht zu 100% erklären können. Hier mal der Stacktrace unseres Clients:
130.01.2012 23:59:44 de.root1.simon.Dispatcher exceptionCaught
2SCHWERWIEGEND: exception Caught. session=0x00000002. Exception
3 org.apache.mina.filter.codec.ProtocolEncoderException: java.lang.NullPointerException
4 at org.apache.mina.filter.codec.ProtocolCodecFilter.filterWrite(ProtocolCodecFilter.java:355)
5 at org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:509)
6 at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1400(DefaultIoFilterChain.java:46)
7 at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.filterWrite(DefaultIoFilterChain.java:808)
8 at org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.filterWrite(DefaultIoFilterChain.java:734)
9 at org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:509)
10 at org.apache.mina.core.filterchain.DefaultIoFilterChain.fireFilterWrite(DefaultIoFilterChain.java:501)
11 at org.apache.mina.core.session.AbstractIoSession.write(AbstractIoSession.java:490)
12 at org.apache.mina.core.session.AbstractIoSession.write(AbstractIoSession.java:435)
13 at de.root1.simon.codec.base.AbstractMessageDecoder.decode(AbstractMessageDecoder.java:116)
14 at org.apache.mina.filter.codec.demux.DemuxingProtocolDecoder.doDecode(DemuxingProtocolDecoder.java:178)
15 at org.apache.mina.filter.codec.CumulativeProtocolDecoder.decode(CumulativeProtocolDecoder.java:178)
16 at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:241)
17 at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
18 at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46)
19 at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:796)
20 at org.apache.mina.filter.ssl.SslHandler.flushScheduledEvents(SslHandler.java:320)
21 at org.apache.mina.filter.ssl.SslFilter.messageReceived(SslFilter.java:506)
22 at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
23 at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46)
24 at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:796)
25 at org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFilterAdapter.java:119)
26 at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
27 at org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageReceived(DefaultIoFilterChain.java:426)
28 at org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:693)
29 at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:646)
30 at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:635)
31 at org.apache.mina.core.polling.AbstractPollingIoProcessor.access$400(AbstractPollingIoProcessor.java:67)
32 at org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1079)
33 at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
34 at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
35 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
36 at java.lang.Thread.run(Thread.java:619)
37Caused by: java.lang.NullPointerException
38 at org.apache.mina.core.buffer.AbstractIoBuffer.putPrefixedString(AbstractIoBuffer.java:1820)
39 at org.apache.mina.core.buffer.AbstractIoBuffer.putPrefixedString(AbstractIoBuffer.java:1795)
40 at org.apache.mina.core.buffer.AbstractIoBuffer.putPrefixedString(AbstractIoBuffer.java:1776)
41 at de.root1.simon.codec.base.MsgErrorEncoder.encodeBody(MsgErrorEncoder.java:54)
42 at de.root1.simon.codec.base.MsgErrorEncoder.encodeBody(MsgErrorEncoder.java:38)
43 at de.root1.simon.codec.base.AbstractMessageEncoder.putMessageToBuffer(AbstractMessageEncoder.java:105)
44 at de.root1.simon.codec.base.AbstractMessageEncoder.encode(AbstractMessageEncoder.java:73)
45 at de.root1.simon.codec.base.AbstractMessageEncoder.encode(AbstractMessageEncoder.java:38)
46 at org.apache.mina.filter.codec.demux.DemuxingProtocolEncoder.encode(DemuxingProtocolEncoder.java:137)
47 at org.apache.mina.filter.codec.ProtocolCodecFilter.filterWrite(ProtocolCodecFilter.java:322)
48 ... 32 more
49
5030.01.2012 23:59:44 de.root1.simon.Dispatcher exceptionCaught
51SCHWERWIEGEND: exception Caught. session=0x00000002. Exception
52 org.apache.mina.filter.codec.ProtocolDecoderException: Message decoder returned NOT_OK. (Hexdump: 03 00 00 00 0F 00 00 01 B8 00 00 01 B4 AC ED 00 05 73 72 01 00 22 63 6F 6D 6D 6F 6E 2E 64 61 74 61 6D 6F 64 65 6C 2E 50 65 72 73 6F 6E 49 6E 66 6F 72 6D 61 74 69 6F 6E 78 70 00 00 00 01 74 00 0E 61 64 6D 69 6E 40 61 64 6D 69 6E 2E 64 65 74 00 04 54 65 73 74 73 72 01 00 26 6F 72 67 2E 68 69 62 65 72 6E 61 74 65 2E 63 6F 6C 6C 65 63 74 69 6F 6E 2E 50 65 72 73 69 73 74 65 6E 74 53 65 74 78 72 01 00 35 6F 72 67 2E 68 69 62 65 72 6E 61 74 65 2E 63 6F 6C 6C 65 63 74 69 6F 6E 2E 41 62 73 74 72 61 63 74 50 65 72 73 69 73 74 65 6E 74 43 6F 6C 6C 65 63 74 69 6F 6E 78 70 FF FF FF FF 00 01 73 72 01 00 11 6A 61 76 61 2E 6C 61 6E 67 2E 49 6E 74 65 67 65 72 78 72 01 00 10 6A 61 76 61 2E 6C 61 6E 67 2E 4E 75 6D 62 65 72 78 70 00 00 00 01 71 00 7E 00 01 74 00 29 63 6F 6D 6D 6F 6E 2E 64 61 74 61 6D 6F 64 65 6C 2E 50 65 72 73 6F 6E 49 6E 66 6F 72 6D 61 74 69 6F 6E 2E 67 72 6F 75 70 73 73 72 01 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 00 77 08 00 00 00 01 00 00 00 00 78 73 72 01 00 11 6A 61 76 61 2E 75 74 69 6C 2E 48 61 73 68 53 65 74 78 70 77 0C 00 00 00 10 3F 40 00 00 00 00 00 00 78 74 00 04 54 65 73 74 7E 72 01 00 19 63 6F 6D 6D 6F 6E 2E 64 61 74 61 6D 6F 64 65 6C 2E 55 73 65 72 52 6F 6C 65 78 72 01 00 0E 6A 61 76 61 2E 6C 61 6E 67 2E 45 6E 75 6D 78 70 74 00 0D 41 44 4D 49 4E 49 53 54 52 41 54 4F 52)
53 at org.apache.mina.filter.codec.demux.DemuxingProtocolDecoder.doDecode(DemuxingProtocolDecoder.java:187)
54 at org.apache.mina.filter.codec.CumulativeProtocolDecoder.decode(CumulativeProtocolDecoder.java:178)
55 at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:241)
56 at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
57 at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46)
58 at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:796)
59 at org.apache.mina.filter.ssl.SslHandler.flushScheduledEvents(SslHandler.java:320)
60 at org.apache.mina.filter.ssl.SslFilter.messageReceived(SslFilter.java:506)
61 at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
62 at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46)
63 at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:796)
64 at org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFilterAdapter.java:119)
65 at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
66 at org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageReceived(DefaultIoFilterChain.java:426)
67 at org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:693)
68 at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:646)
69 at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:635)
70 at org.apache.mina.core.polling.AbstractPollingIoProcessor.access$400(AbstractPollingIoProcessor.java:67)
71 at org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1079)
72 at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
73 at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
74 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
75 at java.lang.Thread.run(Thread.java:619)
76
77Exception in thread "AWT-EventQueue-1" de.root1.simon.exceptions.SimonRemoteException: session was closed. sessionid=0x00000002
78 at de.root1.simon.Dispatcher.interruptWaitingRequests(Dispatcher.java:761)
79 at de.root1.simon.Dispatcher.sessionClosed(Dispatcher.java:812)
80 at org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.sessionClosed(DefaultIoFilterChain.java:665)
81 at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextSessionClosed(DefaultIoFilterChain.java:395)
82 at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$900(DefaultIoFilterChain.java:46)
83 at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.sessionClosed(DefaultIoFilterChain.java:781)
84 at org.apache.mina.filter.codec.ProtocolCodecFilter.sessionClosed(ProtocolCodecFilter.java:387)
85 at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextSessionClosed(DefaultIoFilterChain.java:395)
86 at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$900(DefaultIoFilterChain.java:46)
87 at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.sessionClosed(DefaultIoFilterChain.java:781)
88 at org.apache.mina.filter.ssl.SslFilter.sessionClosed(SslFilter.java:452)
89 at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextSessionClosed(DefaultIoFilterChain.java:395)
90 at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$900(DefaultIoFilterChain.java:46)
91 at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.sessionClosed(DefaultIoFilterChain.java:781)
92 at org.apache.mina.core.filterchain.IoFilterAdapter.sessionClosed(IoFilterAdapter.java:95)
93 at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextSessionClosed(DefaultIoFilterChain.java:395)
94 at org.apache.mina.core.filterchain.DefaultIoFilterChain.fireSessionClosed(DefaultIoFilterChain.java:388)
95 at org.apache.mina.core.service.IoServiceListenerSupport.fireSessionDestroyed(IoServiceListenerSupport.java:244)
96 at org.apache.mina.core.polling.AbstractPollingIoProcessor.removeNow(AbstractPollingIoProcessor.java:580)
97 at org.apache.mina.core.polling.AbstractPollingIoProcessor.removeSessions(AbstractPollingIoProcessor.java:540)
98 at org.apache.mina.core.polling.AbstractPollingIoProcessor.access$600(AbstractPollingIoProcessor.java:67)
99 at org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1087)
100 at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
101 at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
102 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
103 at java.lang.Thread.run(Thread.java:619)
Hättest du eine Idee woran das liegen könnte und hast du zufällig Erfahrung damit ob das überhaupt so ohne Probleme möglich ist die Daten von Hibernate mit SIMON zu übertragen? Unser erster Verdacht ist das etwas mit der Serialisierung schief geht, aber irgendwie lässt sich aus der Exception nicht so wirklich genau ableiten was da genau schiefgelaufen ist...
Vielen Dank schonmal und viele Grüße!
Fabian
Replies (1)
RE: Hibernate Objekte mit SIMON übertragen - Added by achristian 4 months ago
Hmm, die Fehlermeldung kommt mir bekannt vor. AFAIR hab ich das schon gefixt (die nichtssagenden NPE Meldung). Welche Version von SIMON benutzt du?
Prinzipiell hat SIMON keine Probleme damit Hibernate entities zu übertragen. Was nur ist eben wichtig dass
a) die Entities serialisierbar sind und nicht serialisierbare Felder als "transient" markiert sind
b) die Entities "detached" wurden
Eben nochmal den Stacktrace kontrolliert...
Caused by: java.lang.NullPointerException
at org.apache.mina.core.buffer.AbstractIoBuffer.putPrefixedString(AbstractIoBuffer.java:1820)
at org.apache.mina.core.buffer.AbstractIoBuffer.putPrefixedString(AbstractIoBuffer.java:1795)
at org.apache.mina.core.buffer.AbstractIoBuffer.putPrefixedString(AbstractIoBuffer.java:1776)
at de.root1.simon.codec.base.MsgErrorEncoder.encodeBody(MsgErrorEncoder.java:54) // <---------- "Verdächtig"
http://dev.root1.de/projects/simon/repository/annotate/trunk/src/main/java/de/root1/simon/codec/base/MsgErrorEncoder.java
Hab ich eigentlich repariert... Zumindest im trunk, wo schon 1.2.0-SNAPSHOT Entwicklung läuft.
Mal in den 1.1.x branch schauen ...*schauen geh*
Okay, im 1.1.x branch ist das auch gefixt: http://dev.root1.de/projects/simon/repository/diff/branches/1.1.x/src?rev=571&rev_to=556
Bug-Ticket hierzu: http://dev.root1.de/issues/101
Fix-Version ist hier 1.1.3, was aber noch nicht released ist.
Ich vermute du hast 1.1.2 im Einsatz? Kannst du mal auf 1.1.3-SNAPSHOT oder 1.2.0-SNAPSHOT wechseln und den Fehler nochmal versuchen zu reproduzieren?
Gruß
Alex
(1-1/1)