Javaの道 Javaに関する
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道 >  掲示板 >  掲示板(Submit中のリスナ)
閲覧数:611
掲示板(Submit中のリスナ)
名前
匿名
題名 Submit中のリスナ
質問内容

質問を評価する
(0ポイント)
よくsubmit中にプログレバーを表示させる仕組みがありますが、あれはどんなListnerイベントをサーバ側に実装しているのでしょうか?

開発言語はJavaですが、F/Wに依存したライブラリではなく、Listnerイベントから実装できればと思います。

FileUploadが一般的ですが、普通のAction(画面遷移のような簡易な)でも、イベントを取得できるのでしょうか?

また、それは別セッションとなるのでしょうか?
アドバイスいただければ幸いです。
質問日時 2013-11-19 10:13:34
名前
匿名
回答内容

回答を評価する
(0ポイント)
「ファイルアップロード」「プログレスバー」あたりで
ググってみるくらいはしてみた?
回答日時 2013-11-19 21:12:47
名前
匿名
回答内容

回答を評価する
(0ポイント)
やってるますんで。

サーバサイドから戻す必要があるので、どんなListnerか知りたいだけです。

それ以外はwebsocketしかないような。
回答日時 2013-11-20 08:55:56
名前
匿名
回答内容

回答を評価する
(0ポイント)
サーバ側は普通の実装でしょう。
レスポンス内容がHTML丸ごとかデータのみかの違いなだけで。

UI側で非同期にHTTP通信できるように作れば
よいのではないですか。
回答日時 2013-11-20 12:00:28
名前
匿名
回答内容

回答を評価する
(0ポイント)
ありがとうございます。

>サーバ側は普通の実装でしょう。
普通ではできないと思います。Strutsとかはできなかった記憶が。struts2では仕組みがありサンプルが提供されていましたが、そのListnerの元となってるクラス(概念)を知りたいです。

普通のAjaxならば、timeoutを設定すると思いますが、
複数ファイルのアップロードなど、数十分待つ事になり、
プログレスバーでサーバ側の処理件数と同期(UI上だけ)をとりたいです。

UI側は何かしらのレスポンスを受けなければ、進捗の%表示も表示できませんよね。
回答日時 2013-11-20 12:10:28
名前
匿名
回答内容

回答を評価する
(0ポイント)
Struts2は使ったことが無いのでListenerが何を指すのか理解しかねますが、
フレームワークは関係ない(依存しない)のではなかったですか?

> 普通では出来ない

の「普通」も良く分かりませんが、Ajaxといっても単なるHTTP通信なだけですから、
Ajaxの受け口となるエンドポイントをレガシーサーブレットなりで
実装すれば良いのではないですか。

回答日時 2013-11-20 12:53:15
名前
匿名
回答内容

回答を評価する
(0ポイント)
>やってるますんで。
やった結果書かないと意味がないだろう。

XMLHttpRequestのprogressイベントじゃダメなんかね。
回答日時 2013-11-20 13:08:09
名前
匿名
回答内容

回答を評価する
(0ポイント)
ありがとうございます。

>やった結果書かないと意味がないだろう。
質問する前にぐぐるのはマナーだと思ってますので。

XMLHttpRequestのprogressイベントはファイルのアップロードのロードサイズが分子となると思うのですが、実装する処理ではアップロード後にデータをDBに流し込む作業があり、その処理時間中にプログレスバーで進捗状況を出したいと思ってます。

また、Play1のF/Wを使っているのですが、FileUploadsubmit後に、現在の処理状況をAction内でメモリキャッシュし、画面からは別口でX毎秒にAjax取得し、プログレスバーを表示する事も試みたのですが、FileUploadの処理が終わるまで待たされてしまいます。

フレームワーク(同一セッションは一意のActionしかできない排他がかかってる??)の特性なのか判断できませんが、これは制御できるものなのでしょうか?
回答日時 2013-11-20 14:46:44
名前
匿名
回答内容

回答を評価する
(0ポイント)
> 質問する前にぐぐるのはマナーだと思ってますので。

ご自身の環境、今回ならば使用しているFWなどを初めに説明する
のもマナーだと思います。

PlayはリクエストキューイングするFWのようですが、
ここら辺でブロックされているとかないですか。
http://www.playframework-ja.org/documentation/1.2.7/asynchronous#SuspendingHTTPrequests

> フレームワーク(同一セッションは一意のActionしかできない排他がかかってる??)
> の特性なのか判断できませんが、これは制御できるものなのでしょうか?

制御できるかどうかであれば、
単にアップロードを受け付けた時点(DB処理前で)レスポンスを返せばいいだけ
だと思うので、制御できるのでは。
Playで出来るか分かりませんが、多分やり方があるのでしょう。
回答日時 2013-11-20 15:38:55
名前
匿名
回答内容

回答を評価する
(0ポイント)
ありがとうございます。
解決しました。

PlayのF/W側の設定でデベロッパーモードでの起動の為、
シングルスレッドのみの実行環境の為、HTTPリクエスト
がwaitしてしまっているようでした。

同時アクセス数の制御であれば分かるのですが、
スレッド数の制限がされるF/Wということに驚きました。

こういうF/Wもあるんですね。
当初の質問内容とはずれてしまいましたが、submitした
Actionとは別のAjaxActionを取得する事により、
無事とれるようになりました。

ありがとうございました。
回答日時 2013-11-22 14:00:52
回答内容を入力し、「確認」ボタンをクリックしてください。
ログインしていません。ログインしなくても回答はできますが、ログインすると、質問・回答の管理、更新があった場合のメールでの通知を受けることができます。 ユーザIDをお持ちでない方は「ID登録」からユーザIDの登録を行ってください。
氏名 匿名
回答内容
 



このページのトップへ
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道_CopyrightJavaの道