NullPointerException in HBCIHandler.continueThreaded

38 views
Skip to first unread message

Andre Schemschat

unread,
Dec 6, 2019, 9:00:33 AM12/6/19
to hbci4java
Hi zusammen, 

ich habe aktuell ein Problem bei der Einbindung von PushTan mit dem HCBI-Client, bei dem ich noch keine Ahnung habe, was die Ursache sein koennte und hoffe da auf Hilfe.
Ich habe meinen Client auf ein ThreadedCallback umgestellt, um das PushTan-Verfahren mit einzubinden. Wenn ich meine Anwendung aus der IDE oder per Maven starte, dann laeuft der Prozess auch erfolgreich durch. Ich rufe meine Kontobewegungen ab, die Sparkasse fordert eine neue TAN auf, der HCBI-Client gibt einen Request zurueck, ich stelle die TAN bereit und gebe an den HCBI-Client zurueck. Die Verarbeitung geht normal weiter und ich kriege alle Daten erfolgreich wieder. Wenn ich die Anwendung dann auf meinem Rechner in einen Docker-Container packe und starte, laeuft der Prozess ebenfalls erfolgreich durch. Wenn ich diesen Docker-Container jetzt allerdings auf mein lokales NAS (Synology mit Docker-Support) pushe und den Prozess starte, dann wird die Abfrage auch gestartet und die TAN-Anfrage kommt. Doch sobald ich die TAN in meiner UI eingebe und weiterlaufe kommt es zu einer NullPointerException (Siehe StackTrace unten).

Die betreffende Code-Zeile, in der der NPE auftaucht, ist:

sync_main
.startWaiting(Integer.parseInt(HBCIUtils.getParam("kernel.threaded.maxwaittime","300")), "no response from hbci thread - timeout");


Der getParam-Aufruf sollte immer einen Wert zurueckliefern, parseInt wuerde keinen NPE werfen. Also scheint sync_main an der Stelle null zu sein, das heisst ThreadSyncer sync_main=(ThreadSyncer)passport.getPersistentData("thread_syncer_main"); liefert null.

Da der Fehler aber leider nur im Docker-Container auf dem NAS auftaucht ist das Debuggen schwer. Daher waere ich ueber jeden Tipp sehr dankbar! Gerne kann ich auch Teile meines HBCIClients posten, ich wollte nur nicht vorab die Frage zumuellen. Ich nutze aktuell die Maven-Version com.github.hbci4j:hbci4j-core:3.1.24.

Vielen Dank vorab
Andre


2019-11-28 21:12:40 Hibernate: select account0_.id as id1_0_0_, account0_.bic as bic2_0_0_, account0_.blz as blz3_0_0_, account0_.iban as iban4_0_0_, account0_.number as number5_0_0_, account0_.acctype as acctype6_0_0_, account0_.active as active7_0_0_, account0_.currency as currency8_0_0_, account0_.current_saldo as current_9_0_0_, account0_.customerid as custome10_0_0_, account0_.default_account as default11_0_0_, account0_.last_update as last_up12_0_0_, account0_.name as name13_0_0_, account0_.name2 as name14_0_0_, account0_.type as type15_0_0_, account0_.user_id as user_id16_0_0_, user1_.id as id1_5_1_, user1_.blz as blz2_5_1_, user1_.login as login3_5_1_, user1_.name as name4_5_1_ from account account0_ inner join user user1_ on account0_.user_id=user1_.id where account0_.id=?
2019-11-28 21:12:40.160 d.s.b.s.hbci.HbciClient  using default system locale en_US
2019-11-28 21:12:40.161 d.s.b.s.hbci.HbciClient  initialized HBCI4Java for thread group main
2019-11-28 21:12:40.161 d.s.b.s.hbci.HbciClient  hbci4java 3.1.24
2019-11-28 21:12:40.162 d.s.b.s.hbci.HbciClient  trying to load BLZ data
2019-11-28 21:12:40.184 d.s.b.s.hbci.HbciClient  creating new instance of a PinTan passport
2019-11-28 21:12:40.185 d.s.b.s.hbci.HbciClient  have to create new passport file
2019-11-28 21:12:40.186 d.s.b.s.hbci.HbciClient  hbci thread: threaded callback received
2019-11-28 21:12:40.186 d.s.b.s.hbci.HbciClient  hbci-thread: non-execute-callback, calling real callback
2019-11-28 21:12:40.186 d.s.b.s.hbci.HbciClient  hbci thread: threaded callback received
2019-11-28 21:12:40.187 d.s.b.s.hbci.HbciClient  hbci-thread: non-execute-callback, calling real callback
2019-11-28 21:12:40.187 d.s.b.s.hbci.HbciClient  hbci thread: threaded callback received
2019-11-28 21:12:40.188 d.s.b.s.hbci.HbciClient  hbci-thread: non-execute-callback, calling real callback
2019-11-28 21:12:40.188 d.s.b.s.hbci.HbciClient  hbci thread: threaded callback received
2019-11-28 21:12:40.188 d.s.b.s.hbci.HbciClient  hbci-thread: non-execute-callback, calling real callback
2019-11-28 21:12:40.189 d.s.b.s.hbci.HbciClient  hbci thread: threaded callback received
2019-11-28 21:12:40.189 d.s.b.s.hbci.HbciClient  hbci-thread: non-execute-callback, calling real callback
2019-11-28 21:12:40.189 d.s.b.s.hbci.HbciClient  hbci thread: threaded callback received
2019-11-28 21:12:40.190 d.s.b.s.hbci.HbciClient  hbci-thread: non-execute-callback, calling real callback
2019-11-28 21:12:40.190 d.s.b.s.hbci.HbciClient  hbci thread: threaded callback received
2019-11-28 21:12:40.190 d.s.b.s.hbci.HbciClient  hbci-thread: non-execute-callback, calling real callback
2019-11-28 21:12:40.191 d.s.b.s.hbci.HbciClient  saving two step mechs: []
2019-11-28 21:12:40.191 d.s.b.s.hbci.HbciClient  (re)checking selected pintan method using auto-determine strategy
2019-11-28 21:12:40.192 d.s.b.s.hbci.HbciClient  saving current tan method: 999
2019-11-28 21:12:40.192 d.s.b.s.hbci.HbciClient  saving passport data to /tmp/hbci4java-passport163062626396248419.dat
2019-11-28 21:12:40.193 d.s.b.s.hbci.HbciClient  hbci thread: threaded callback received
2019-11-28 21:12:40.193 d.s.b.s.hbci.HbciClient  hbci-thread: non-execute-callback, calling real callback
2019-11-28 21:12:40.437 d.s.b.s.hbci.HbciClient  used time for encrypting passort into 817 bytes: 245 millis
2019-11-28 21:12:40.438 d.s.b.s.hbci.HbciClient  passport data saved using AESFormat
2019-11-28 21:12:40.439 d.s.b.s.hbci.HbciClient  saving file /tmp/hbci4java-passport163062626396248419.dat
2019-11-28 21:12:40.439 d.s.b.s.hbci.HbciClient  renaming hbci4java-passport163062626396248419.dat_4500175253618018588 to hbci4java-passport163062626396248419.dat
2019-11-28 21:12:40.440 d.s.b.s.hbci.HbciClient  new file now exists: /tmp/hbci4java-passport163062626396248419.dat
2019-11-28 21:12:40.441 d.s.b.s.hbci.HbciClient  loading passport data from /tmp/hbci4java-passport163062626396248419.dat
2019-11-28 21:12:40.688 d.s.b.s.hbci.HbciClient  used time for decrypting 817 bytes: 246 millis
2019-11-28 21:12:40.689 d.s.b.s.hbci.HbciClient  passport data loaded using AESFormat
2019-11-28 21:12:40.690 d.s.b.s.hbci.HbciClient  main thread: continuing hbci dialog with callback retData
2019-11-28 21:12:40.691 d.s.b.s.hbci.HbciClient  main thread: awaking hbci thread with callback data from application
2019-11-28 21:12:40.691 d.s.b.s.hbci.HbciClient  sync_hbci.stopWaiting
2019-11-28 21:12:40.692 d.s.b.s.hbci.HbciClient  sync_hbci.stopWaiting: no one waits, so we do nothing
2019-11-28 21:12:40.693 d.s.b.s.hbci.HbciClient  main thread: waiting for hbci result or new callback data from hbci thread
2019-11-28 21:12:40.694 d.s.b.s.hbci.HbciClient  destroying all HBCI4Java resources
2019-11-28 21:12:40.709 c.v.s.DefaultErrorHandler  
2019-11-28 21:12:40
2019-11-28 21:12:40 java.lang.NullPointerException: null
2019-11-28 21:12:40 at org.kapott.hbci.manager.HBCIHandler.continueThreaded(HBCIHandler.java:555) ~[hbci4j-core-3.1.24.jar!/:3.1.24]
2019-11-28 21:12:40 at de.s.banking.service.hbci.HbciClient.continueBookingRequest(HbciClient.java:288) ~[classes!/:1.1-SNAPSHOT]
2019-11-28 21:12:40 at de.s.banking.service.hbci.HbciClient.getBookings(HbciClient.java:228) ~[classes!/:1.1-SNAPSHOT]
2019-11-28 21:12:40 at de.s.banking.service.hbci.HbciService.updateBookingsForAccount(HbciService.java:90) ~[classes!/:1.1-SNAPSHOT]
2019-11-28 21:12:40 at de.s.banking.service.hbci.HbciService.updateAccount(HbciService.java:71) ~[classes!/:1.1-SNAPSHOT]
2019-11-28 21:12:40 at de.s.banking.service.AccountService.updateBookings(AccountService.java:168) ~[classes!/:1.1-SNAPSHOT]
2019-11-28 21:12:40 at de.s.banking.service.AccountService$$FastClassBySpringCGLIB$$823dd49f.invoke(<generated>) ~[classes!/:1.1-SNAPSHOT]
2019-11-28 21:12:40 at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) ~[spring-core-5.0.10.RELEASE.jar!/:5.0.10.RELEASE]
2019-11-28 21:12:40 at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:746) ~[spring-aop-5.0.10.RELEASE.jar!/:5.0.10.RELEASE]
2019-11-28 21:12:40 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.0.10.RELEASE.jar!/:5.0.10.RELEASE]
2019-11-28 21:12:40 at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:294) ~[spring-tx-5.0.10.RELEASE.jar!/:5.0.10.RELEASE]
2019-11-28 21:12:40 at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98) ~[spring-tx-5.0.10.RELEASE.jar!/:5.0.10.RELEASE]
2019-11-28 21:12:40 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185) ~[spring-aop-5.0.10.RELEASE.jar!/:5.0.10.RELEASE]
2019-11-28 21:12:40 at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688) ~[spring-aop-5.0.10.RELEASE.jar!/:5.0.10.RELEASE]
2019-11-28 21:12:40 at de.s.banking.service.AccountService$$EnhancerBySpringCGLIB$$89c7ab9b.updateBookings(<generated>) ~[classes!/:1.1-SNAPSHOT]
2019-11-28 21:12:40 at de.s.banking.ui.views.AccountsView.lambda$executeUpdateAccount$2(AccountsView.java:205) ~[classes!/:1.1-SNAPSHOT]
2019-11-28 21:12:40 at de.s.banking.ui.components.ResultDialog.oked(ResultDialog.java:23) ~[classes!/:1.1-SNAPSHOT]
2019-11-28 21:12:40 at de.s.banking.ui.components.AbstractDialog.close(AbstractDialog.java:72) ~[classes!/:1.1-SNAPSHOT]
2019-11-28 21:12:40 at de.s.banking.ui.components.AbstractDialog.lambda$createDialog$d3203346$1(AbstractDialog.java:47) ~[classes!/:1.1-SNAPSHOT]
2019-11-28 21:12:40 at sun.reflect.GeneratedMethodAccessor78.invoke(Unknown Source) ~[na:na]
2019-11-28 21:12:40 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_212]
2019-11-28 21:12:40 at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_212]
2019-11-28 21:12:40 at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:499) ~[vaadin-server-8.7.1.jar!/:8.7.1]
2019-11-28 21:12:40 at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:273) ~[vaadin-server-8.7.1.jar!/:8.7.1]
2019-11-28 21:12:40 at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:237) ~[vaadin-server-8.7.1.jar!/:8.7.1]
2019-11-28 21:12:40 at com.vaadin.server.AbstractClientConnector.fireEvent(AbstractClientConnector.java:1014) ~[vaadin-server-8.7.1.jar!/:8.7.1]
2019-11-28 21:12:40 at com.vaadin.ui.Button.fireClick(Button.java:384) ~[vaadin-server-8.7.1.jar!/:8.7.1]
2019-11-28 21:12:40 at com.vaadin.ui.Button$1.click(Button.java:57) ~[vaadin-server-8.7.1.jar!/:8.7.1]
2019-11-28 21:12:40 at sun.reflect.GeneratedMethodAccessor77.invoke(Unknown Source) ~[na:na]
2019-11-28 21:12:40 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_212]
2019-11-28 21:12:40 at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_212]
2019-11-28 21:12:40 at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:155) ~[vaadin-server-8.7.1.jar!/:8.7.1]
2019-11-28 21:12:40 at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:116) ~[vaadin-server-8.7.1.jar!/:8.7.1]
2019-11-28 21:12:40 at com.vaadin.server.communication.ServerRpcHandler.handleInvocation(ServerRpcHandler.java:445) [vaadin-server-8.7.1.jar!/:8.7.1]
2019-11-28 21:12:40 at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:410) [vaadin-server-8.7.1.jar!/:8.7.1]
2019-11-28 21:12:40 at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:274) [vaadin-server-8.7.1.jar!/:8.7.1]
2019-11-28 21:12:40 at com.vaadin.server.communication.PushHandler.lambda$new$1(PushHandler.java:148) [vaadin-server-8.7.1.jar!/:8.7.1]
2019-11-28 21:12:40 at com.vaadin.server.communication.PushHandler.callWithUi(PushHandler.java:248) [vaadin-server-8.7.1.jar!/:8.7.1]
2019-11-28 21:12:40 at com.vaadin.server.communication.PushHandler.onMessage(PushHandler.java:534) [vaadin-server-8.7.1.jar!/:8.7.1]
2019-11-28 21:12:40 at com.vaadin.server.communication.PushAtmosphereHandler.onMessage(PushAtmosphereHandler.java:87) ~[vaadin-server-8.7.1.jar!/:8.7.1]
2019-11-28 21:12:40 at com.vaadin.server.communication.PushAtmosphereHandler.onRequest(PushAtmosphereHandler.java:77) ~[vaadin-server-8.7.1.jar!/:8.7.1]
2019-11-28 21:12:40 at org.atmosphere.cpr.AsynchronousProcessor.action(AsynchronousProcessor.java:225) ~[atmosphere-runtime-2.4.30.vaadin1.jar!/:2.4.30.vaadin1]
2019-11-28 21:12:40 at org.atmosphere.cpr.AsynchronousProcessor.suspended(AsynchronousProcessor.java:114) ~[atmosphere-runtime-2.4.30.vaadin1.jar!/:2.4.30.vaadin1]
2019-11-28 21:12:40 at org.atmosphere.container.Servlet30CometSupport.service(Servlet30CometSupport.java:67) ~[atmosphere-runtime-2.4.30.vaadin1.jar!/:2.4.30.vaadin1]
2019-11-28 21:12:40 at org.atmosphere.cpr.AtmosphereFramework.doCometSupport(AtmosphereFramework.java:2297) ~[atmosphere-runtime-2.4.30.vaadin1.jar!/:2.4.30.vaadin1]
2019-11-28 21:12:40 at org.atmosphere.websocket.DefaultWebSocketProcessor.dispatch(DefaultWebSocketProcessor.java:594) ~[atmosphere-runtime-2.4.30.vaadin1.jar!/:2.4.30.vaadin1]
2019-11-28 21:12:40 at org.atmosphere.websocket.DefaultWebSocketProcessor$3.run(DefaultWebSocketProcessor.java:345) ~[atmosphere-runtime-2.4.30.vaadin1.jar!/:2.4.30.vaadin1]
2019-11-28 21:12:40 at org.atmosphere.util.VoidExecutorService.execute(VoidExecutorService.java:101) ~[atmosphere-runtime-2.4.30.vaadin1.jar!/:2.4.30.vaadin1]
2019-11-28 21:12:40 at org.atmosphere.websocket.DefaultWebSocketProcessor.dispatch(DefaultWebSocketProcessor.java:340) ~[atmosphere-runtime-2.4.30.vaadin1.jar!/:2.4.30.vaadin1]
2019-11-28 21:12:40 at org.atmosphere.websocket.DefaultWebSocketProcessor.invokeWebSocketProtocol(DefaultWebSocketProcessor.java:448) ~[atmosphere-runtime-2.4.30.vaadin1.jar!/:2.4.30.vaadin1]
2019-11-28 21:12:40 at org.atmosphere.container.JSR356Endpoint$3.onMessage(JSR356Endpoint.java:272) ~[atmosphere-runtime-2.4.30.vaadin1.jar!/:2.4.30.vaadin1]
2019-11-28 21:12:40 at org.atmosphere.container.JSR356Endpoint$3.onMessage(JSR356Endpoint.java:269) ~[atmosphere-runtime-2.4.30.vaadin1.jar!/:2.4.30.vaadin1]
2019-11-28 21:12:40 at org.apache.tomcat.websocket.WsFrameBase.sendMessageText(WsFrameBase.java:394) ~[tomcat-embed-websocket-8.5.34.jar!/:8.5.34]
2019-11-28 21:12:40 at org.apache.tomcat.websocket.server.WsFrameServer.sendMessageText(WsFrameServer.java:119) ~[tomcat-embed-websocket-8.5.34.jar!/:8.5.34]
2019-11-28 21:12:40 at org.apache.tomcat.websocket.WsFrameBase.processDataText(WsFrameBase.java:495) ~[tomcat-embed-websocket-8.5.34.jar!/:8.5.34]
2019-11-28 21:12:40 at org.apache.tomcat.websocket.WsFrameBase.processData(WsFrameBase.java:294) ~[tomcat-embed-websocket-8.5.34.jar!/:8.5.34]
2019-11-28 21:12:40 at org.apache.tomcat.websocket.WsFrameBase.processInputBuffer(WsFrameBase.java:133) ~[tomcat-embed-websocket-8.5.34.jar!/:8.5.34]
2019-11-28 21:12:40 at org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:82) ~[tomcat-embed-websocket-8.5.34.jar!/:8.5.34]
2019-11-28 21:12:40 at org.apache.tomcat.websocket.server.WsFrameServer.doOnDataAvailable(WsFrameServer.java:171) ~[tomcat-embed-websocket-8.5.34.jar!/:8.5.34]
2019-11-28 21:12:40 at org.apache.tomcat.websocket.server.WsFrameServer.notifyDataAvailable(WsFrameServer.java:151) ~[tomcat-embed-websocket-8.5.34.jar!/:8.5.34]
2019-11-28 21:12:40 at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.upgradeDispatch(WsHttpUpgradeHandler.java:148) ~[tomcat-embed-websocket-8.5.34.jar!/:8.5.34]
2019-11-28 21:12:40 at org.apache.coyote.http11.upgrade.UpgradeProcessorInternal.dispatch(UpgradeProcessorInternal.java:54) ~[tomcat-embed-core-8.5.34.jar!/:8.5.34]
2019-11-28 21:12:40 at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:53) ~[tomcat-embed-core-8.5.34.jar!/:8.5.34]
2019-11-28 21:12:40 at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806) ~[tomcat-embed-core-8.5.34.jar!/:8.5.34]
2019-11-28 21:12:40 at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498) ~[tomcat-embed-core-8.5.34.jar!/:8.5.34]
2019-11-28 21:12:40 at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-8.5.34.jar!/:8.5.34]
2019-11-28 21:12:40 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_212]
2019-11-28 21:12:40 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_212]
2019-11-28 21:12:40 at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-8.5.34.jar!/:8.5.34]
2019-11-28 21:12:40 at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_212]



Olaf Willuhn

unread,
Dec 6, 2019, 9:36:41 AM12/6/19
to hbci...@googlegroups.com
Hallo,

> Da der Fehler aber leider nur im Docker-Container auf dem NAS auftaucht
> ist das Debuggen schwer.

Du kannst Java-Anwendungen doch remote debuggen. Starte die
Java-Anwendung auf dem Container mit "-Xdebug
-Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=y". Dann
kannst du dich auf den Port 8000 zum Remote-Debugging verbinden.

Gruss
Olaf

Reply all
Reply to author
Forward
0 new messages