2016-07-18 27 views
2

私はas400-java統合を初めてお勧めします。 バックエンドでJavaプログラムを呼び出すWebアプリケーションを作成しました。このアプリケーションは、jt400 apiからAS400を呼び出します。 現在のユーザーをサインオフするログオフボタン/ハイパーリンクを保持したいと思います。 私が観察したことは、ユーザーが初めてログインしたときに、Webアプリケーションサーバー(Tomcat)を再起動しないとログオフが実行されないことです。 ]、私は私のJavaプログラムでこの をしたにもかかわらず:私が行っていたときに、まだそのユーザーがログオンしているJavaプログラムからのAS400サインオフ

finally{ 
    as400System.disconnectAllServices(); 
    } 

、次回は、私は私のWebアプリケーションのURLをヒット。

私は別のプログラムを通じてAS400の「サインオフ」コマンドを呼び出すしようとしましたが、そのコマンドの呼び出しは「偽」を返すされ

:コードを印刷の上

CommandCall command = new CommandCall(as400); 
boolean result= command.run("signoff"); .... 
System.out.println(result);... 
AS400Message[] messageList = command.getMessageList(); 
    for (AS400Message message : messageList){ 
    System.out.println(message.getText()); 
    } 

この:

false.. 
Command SIGNOFF not allowed in this setting. 
Errors occurred in command. 

このようなシナリオでサインオフを処理する方法はありますか?

+0

ログオンに使用したコードを表示できますか?ユーザーがログオンしていることをどのように知っていますか? (資格情報がキャッシュされる可能性があるため、ログオンプロンプトの不在は十分ではありません)また、FYIのSIGNOFFはターミナルセッション専用ですので、ログオンが何であっても適切なログオフを決定する必要があります。 – user2338816

+0

私はjt400 jarを使用しています。それには、AS400のURL(ログイン資格情報なし)にしか到達しないと、ログインするように促すポップアップの組み込みスイングタイプが付属しています。したがって私はWebアプリケーション側からログインするための自分のJavaコードを持っていません。そして、キャッシングファクタは私の心にも来ましたが、キャッシングの場所と方法はここでは分かりません@ user2338816 – Ani

答えて

1

JavdocsdisconnectAllServices()

は、すべてのサービスを切断することを言います。このオブジェクトに関連付けられているすべてのソケット接続が閉じられます。 サインオン情報は変更されず、接続プロパティは固定されたままです。

私はあなたがresetAllServices()

切断し、すべてのサービス、およびサインオン情報をクリアしたいと思います。この方法の目的は、このAS400オブジェクトの「スレート清掃」を行い、その後接続プロパティをリセットできるようにすることです。

+0

Charlesに感謝しますが、resetAllServices()は私の問題を解決してくれないようです。私は両方を追加しました \t as400System.disconnectAllServices(); \t as400System.resetAllServices();私の最終的なブロックで。まだ同じ問題です。ログインプロンプトが表示されません(Tomcatを再起動しています)。ログインしているユーザーは何とかログインしています。 :( – Ani

0

更新:1つのステップを考え出しました。 jt400 apiのデフォルトのサインオンプロンプトには、「Default Id」チェックボックスが付いています。これをチェックしないと、javaログアウト・コードのcom.ibm.as400.access.AS400オブジェクトを無効にするときに再ログインを要求しています。それで大丈夫です。

まだ問題は解決されていますが、そのチェックボックスをオンにすると、Webサーバーを再起動する必要があります。

+0

更新:回避策を選択しました。com.ibm.as400.access.AS400オブジェクトのsetGuiAvailable(false)を設定しました。今私はサインオンポップアップを取得していません。自分のログインWebページを生成しました。誤った試行では、jt400はAS400SecurityExceptionをスローします。これは例外オブジェクトからのエラー・メッセージの処理と取得です。 – Ani