Hibernate Objekte mit SIMON übertragen

Added by flammi 4 months ago

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)