2016-11-08 12 views
-1

ユーザがコンピュータにログオフまたはログインしたときにコンピュータにログオンしたときにデータベースに時刻を保存しようとしています現在の時刻をデータベースに格納せず、コンソールでctrl+cを押すか、NETBEANSからプログラムを終了すると、ログアウト時刻も保存されます。どこが間違っているの?これで私を助けてください。以下は私のコードです。前もって感謝します。Javaシャットダウンフックを使用してコンピュータのログアウトにログアウト時間を保存できない

+0

明示的にlogoutTime()メソッドを呼び出しましたか? – user6904265

+0

はい私はこれを行いました... if(hashedPassword.equals(pass)){ System.out.println( "あなたは" + loginUsername "としてログインしています。 ClockView cv = new ClockView(); cv.loginTime(); cv.logoutTime(); cv.timerStart(); cv.stopTimer(); cv.elapsedTime(); else { System.out.println( "不正なパスワード。試してみてください"); } ' –

答えて

3

ログオフすると、オペレーティングシステムがデータベースをシャットダウンしてから、JMVのシャットダウンフックが呼び出されます。 DBを呼び出そうとすると、実際にはダウンしています。

ファイルロガーをセットアップし、コンピュータからログオフした後に例外がログに記録されるかどうかを確認してください。私の推測では、いくつかの「接続に失敗しました」タイプの例外があるということです。

+0

これはまさに私が思ったものですが、これをどのように並べ替えるべきかはわかりません:( –

+0

私はロガーでこれを試しましたが、' ctrl + c'を押してコンソールからプログラムを終了した後、再び、その後、私はあまりにも、システムをログオフし、それを遮断すると試みたが、何も起こらなかった 'Globals.globalClockBean.setLogout_time(時間);。 試し{ cd.insert(Globals.globalClockBean); ロガーlogger2 =ロガー。 logger.info( "Shutting 2"); } catch(Exception ex){ Logger.getLogger(ClockController.class.getName()).log(Level.SEVERE、null、ex ); } ' –

+1

おそらくキャッチブロック(DB挿入が失敗した場合)で一時ファイルに書き込むことができます。アプリケーションが再び起動すると、このファイルが読み込まれ、DBに適切なレコードが挿入されます...しかし、それは本当に奇妙な解決方法です – Igor

1

コンピュータから単にログアウトすると、jvmはシャットダウンされず、フックは呼び出されません。

+0

どうすればいいですか?私はそれを私が望むように動かすために何をすべきですか? –

関連する問題