2016-09-21 15 views
3

私はstruts2を使用して顧客のためのWebベースの請求書を生成しています。また、請求書を送付しています。私は電子メールとSMSをuser.Afterに送信しているページを生成した請求書ページにリダイレクトしています。コードの実行時間を短縮

私のコードは

DBのデータを挿入すると、電子メールで送信するために、クラスのオブジェクトとSMS inviceある
public generateInvoice(Invoice invoce) 
{ 
    int i=DB.insert(invoice); 
    if(i==1) 
    { 
     DB.sendEmail(invoice); 
     Db.smsInvoiceIinvoice); 
    } 
    redirect to generatedInvoice page 
} 

以下のようなものです。 私の問題は、電子メールを送信する請求書を生成している間に送信SMSが時間がかかりすぎることです。

私が考えた別の方法は、生成された請求書のページにリダイレクトされます。そこから私はユーザーにSMSと電子メールを送信しますが、問題はユーザーがすぐに別のページのリンクをクリックすると問題が発生する可能性があるということです。

この時間を短縮するにはどうすればよいですか?

+0

あなたは 'sendEmail'と' smsInvoice'を同時に処理することができます。 – niyasc

+0

例やコードのリンクはありますか? – xrcwrn

+1

これはあなたのためのトリックを行う.. struts2非同期アクションをサポートするhttp://stackoverflow.com/questions/12844797/struts2-async-action – mhasan

答えて

0

最初に答えるべきことは:sending emailsending smsは並行して実行できますか?これが真であれば、それぞれのスレッドを作成して一緒に実行させることができます。両方のスレッドを終了すると、アクションが完了します。このようにして、実行の合計時間は最長スレッドの時間になります。

私は、主な問題は、電子メールとSMSが送信されている間、ユーザはちょうど迷惑なブラウザの待機欄を見ることになると思います。 Struts 2の実行および待機インターセプタ(http://struts.apache.org/docs/execute-and-wait-interceptor.html)を使用できます。

ExecuteAndWaitInterceptorは、ユーザーに素敵な進捗メーターを表示しながら、バックグラウンドで長寿命のアクション を実行するのに最適です。この は、アクションが に5分または10分以上かかると、HTTP要求がタイムアウトしないようにします。

このインターセプタは実行時間を短縮するものではなく、ユーザーフレンドリーであることに注意してください。

関連する問題