2016-03-23 14 views
0

私はSessionCreateRQを成功裏に実装しました。PHPを使用しています。セキュリティトークンが期限切れになったときの対処方法が混乱しています。 セッション管理の概要 SessionValidateRQを使用してセッションをリフレッシュすることはできますが、検索中はドキュメントが見つかりませんでした。私は検索中にRefresh Sessionのドキュメントしか見つけません。セッション管理:接続をリフレッシュする

サービスのドキュメントはありますかSessionValidateRQ? そして、私は少しapiのセッションを管理するのが混乱していますか?

答えて

0

パフォーマンスとセッションに関するベストプラクティスを既に確認しているようです。

通常、アプリケーションの起動時に一定量のセッションを開始し、タイムアウトする前にリフレッシュするプロセス/ジョブがあります(トランザクション量にもよりますが)。これは、ユーザーがオンデマンドで「ショッピング」プロセスを完了できるようにするためです。

予約時に、PassengerDetailsとEnhancedAirBookのサービスを順番に使用することができます(乗客名、フライトを選択した後など)。短い会話を使用します(つまり、SessionCreateRQを使用してセッションを開き、これら2つのサービスを順番に実行してから、SessionCloseRQを使用してセッションを終了します)。

+0

2つ以上のチケットを発行するために同じセキュリティトークンを使用することはできますか? – sixFingersMan

+0

同時に行うことはできません。セッションを閉じる必要はありませんが、チケットを発行したい新しいPNRで作業領域セッションをクリアする必要があります。 – jmacagno

1

私は開発中のアプリケーションでOTA_PingRQを使用しています。一般的にセイバーとのやり取りはすべてセッションを延長しますが、手動でセイバーを延長したい場合もあります。

このケースを考えてみましょう。Sabreへの最後のリクエストが送信されてから15分後にSabreのタイムアウトが発生し、アプリケーションに乗客データを入力するユーザーがいます。アクションを完了するのに15分以上かかることがあることは明らかです。その場合、セッションを有効に保つために14分後にOTA_PingRQをセイバーに送信することができます(今度は有効期限まで15分の間隔があります)

+0

これは私が使用しているものです。 – systematical

0

現在、私はKeep AliveセッションにSessionValidateRQを使用しています。

msgHeader.Service = new Service(); 
      msgHeader.Service.Value = "SessionValidateRQ"; 
      msgHeader.Action = "SessionValidateRQ"; 

      //Set credentials to create session 
      Security secure = new Security(); 
      secure.UsernameToken = new SecurityUsernameToken(); 
      secure.UsernameToken.Username = Config.WC_EPR; 
      secure.UsernameToken.Password = Config.WC_PASSCODE; 
      secure.UsernameToken.Organization = Config.WC_IPCC; 
      secure.UsernameToken.Domain = Config.WC_DOMAIN; 
      secure.BinarySecurityToken = sToken; 
      Object ssValidateRq = new object(); 
      var ret = svc.SessionValidateRQ(ref msgHeader, ref secure, ssValidateRq);