Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

Submit中のリスナ

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

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

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

また、それは別セッションとなるのでしょうか?
アドバイスいただければ幸いです。

9

回答

7551

閲覧

9件の回答

評価

0

「ファイルアップロード」「プログレスバー」あたりで
ググってみるくらいはしてみた?

評価

0

やってるますんで。

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

それ以外はwebsocketしかないような。

評価

0

サーバ側は普通の実装でしょう。
レスポンス内容がHTML丸ごとかデータのみかの違いなだけで。

UI側で非同期にHTTP通信できるように作れば
よいのではないですか。

評価

0

ありがとうございます。

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

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

UI側は何かしらのレスポンスを受けなければ、進捗の%表示も表示できませんよね。

評価

0

Struts2は使ったことが無いのでListenerが何を指すのか理解しかねますが、
フレームワークは関係ない(依存しない)のではなかったですか?

> 普通では出来ない

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

評価

0

>やってるますんで。
やった結果書かないと意味がないだろう。

XMLHttpRequestのprogressイベントじゃダメなんかね。

評価

0

ありがとうございます。

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

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

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

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

評価

0

> 質問する前にぐぐるのはマナーだと思ってますので。

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

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

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

制御できるかどうかであれば、
単にアップロードを受け付けた時点(DB処理前で)レスポンスを返せばいいだけ
だと思うので、制御できるのでは。
Playで出来るか分かりませんが、多分やり方があるのでしょう。

評価

0

ありがとうございます。
解決しました。

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

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

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

ありがとうございました。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。