ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

プログラミング王国コミュの大体、Webってどうなってるの????

  • mixiチェック
  • このエントリーをはてなブックマークに追加
オッス!オラ悟空!!
オラは、VB,VC++,JAVA(Servlet Jsp),ASPなんかの経験があるけど、Web系の開発を始めたときに、えらく躓いてしまった。

で、何が・・・どういけないのか???
基礎知識的部分や、欠落している部分の断片で、コーディングするときにえらく時間がかかったりします。

で、とりあえず、すごーーーーく気になっていることがあって
netを検索したけど、上っ面だけでコピペになってしまうがおちなので、質問しちゃったりします。

Servlet JspでTomcat、まぁStruts、Eclipseな環境で開発してますけど、ファイルのアップロードするときにやダウンロードするときに、requestやresponseってどんな風にうけわたされるんですかねぇ。

アップロード時、requestに対して、送る側のJspにはmultipartにするわけだけど、受け取った側で小分けにして受け取るような処理をやっているんですかね???

なぜかって、言うとでかいファイルをアップロードすると(Filterなし)VMでOutOfMemoryって出るんだけど、小分けにして、テンポラリファイルに吐き出せば、そんなこともないかなぁと思ったりするからですけど、

また、どうやってHTTPポートに送って、Servletがどうやって受け取るかを確認するにはどんな方法がありますか?
ソースをダウンロードしてきて、どこにおいて何と関係付ければ(jar)とかどうやってわかるのかわかんないです。

気の長いかた、おしえてください。

コメント(5)

ファイルのアップロードをしたことなかったので自分でも調べてみた。
http://civic.xrea.jp/2006/07/19/struts-fileupload2/
http://www.javaroad.jp/opensource/js_struts20.htm

一定のファイル容量を超えると一時ファイルを使うようですね。
なので正しく設定されていればOutOfMemoryにはならないように思えるんだけど・・
何でそうなるかはよく分かりませんっ>_<。
詳しい人、教えてあげてっ>_<。

パケット解析ツール使えばHTTP通信の内容は分かるけどそういうことじゃないかな?
Etherealとか有名らしいです。
http://www.ethereal.com/

jarの関連付けとはクラスパスを通すことを言ってます?
Eclipseを使っているなら、.classpathがクラスパスの設定内容です。
プロジェクトを右クリックしてプロパティを見れば設定できるところがあったはず。
ちなみに、jarファイルはzipファイルにソースファイルとマニフェストファイルを入れて拡張子を.jarにしたようなものです。
これもEclipseを使えばマニフェストの設定とかも簡単に出来ます。
jarコマンドでも可能です。
適当なjarファイルの拡張子を.zipにして覗いてみると中身が分かります!
(圧縮形式はZIPなので)
web系ならWEB-INF内のlibフォルダにjarを入れれば特に設定しなくてもOKだと思う。
Web系以外や別ディレクトリのjarをビルドパスに追加する場合は、上の画像みたいに外部 jarの追加でOKです。
ソースはソースフォルダの中に詰め込んどけばOK!!

Eclipseを使っているなら、
・フォルダをソースフォルダにしたい場合
右クリックして「ビルド・パス」で「ソース・フォルダとして使用」を選択。
・jarファイル等の設定をしたい場合
「ビルドパスの構成」を選択すればOKです。
もしくは、1でも書いたようにプロパティから設定。

Eclipseではなく実運用の環境で設定するなら、
jarファイルとソースファイルのディレクトリをクラスパスに追加しましょう。
もしくは、システムの環境変数に追加する。
>とまとん ありがと
オッス!オラ悟空!!

1.OutOfMemoryの件
今使っているのは、イントラマートフレームワークなんてのが乗っていたりします。しかも、WASと仲良くしてます。
イントラマート(あまり関係ないのですが・・・)でページベースなる開発モデルみたいなのが存在して、javaScriptでアクションをコーディングしたりします。そこで使用しているAPIが
一度メモリに展開しなくてはならない仕組みなのでOutOfMemoryが発生するのかなぁとおもっちえたら、どうもログをみるとFilterでこけてるんですよ。
で、Filterを実行するときには、すでにRequestは情報を受け取っているみたいなので(ServletのDoFilterではこのタイミングでRequestを受け取っている)この段階で、OutOfMemoryがはっせいしているのかなぁ???と思ったりしたわけです。
微妙なのは、ServletのFilterでファイル容量を指定して、これ以上なら、ダメってはじくことができ、requestを受け取っているように思うんだけど、OutOfMemoryは発生しないってことです。摩訶不思議ですなぁ。

2.jarの関連付けの件
jarの関連付けとは、jarとソースを関連付けて、eclipseでデバッグできるようにできるらしいんですよ。
たとえば、知ってるところでいうと、なにやらジャカルタコモンズなるモノが存在しているらしいんです。それとどのjarをどうやって関連付ければデバッガで追えるのかがわかんないんです。他にもjarっていっぱいいりますよねぇ?これってどれをどのソースに結びつけるの????ってことです。

3.ちょっとわかったような気がすること
多分、アプリケーションサーバがrequestをどうやって受け取るのかを制御しているんじゃないかなぁ???と思ったりします。イントラマート(あまり関係ないけど・・・)のフレームワークでは、マルチパートの場合で指定サイズより大きなrequestが投げられた場合はファイルに分割して保存しているんですよ。うーんやっぱりフレームワーク????それともServletなのかな?そもそも、Tomcatのソースってどうやって手に入れて、どうやってデバッグするんだ????いつも、オラが探すと見つからないんだよなぁ。

4.ツール
>パケット解析ツール使えばHTTP通信の内容は分かるけどそう>いうことじゃないかな?
>Etherealとか有名らしいです。
使ってみたりします。ありがとうございました。
1.まったく使ったことないフレームワークでわけわからん^^
以上。(*´д`*)
この辺が参考になりそうな気がする。
http://www.atmarkit.co.jp/fjava/rensai2/webopt13/webopt13.html
フレームワークにファイルサイズに応じてメモリで保持or一時ファイルに保持を判別する仕組みがあるなら、その辺の設定が間違ってるかうまく機能してないと思うんだけど・・・
フレームワークの仕様が分からないのでこれが限界ですっ!
FilterでrequestからファイルをInputStreamに展開してるのかな!?

2.jarはクラスファイルをzipにまとめたもの+マニフェストファイルの拡張子を.jarにしたもの(中身は)
つまり、そのjarの中のクラスを使えるようにする。
それがクラスパスを通すとかEclipseでいうビルドバス。
デバックでソースを追うには.classファイルだけじゃソースが見れない。
.javaファイルが必要。
でも、オープンソースでないなら.javaファイルなんてない。
ただし、逆コンパイラなるもので.classファイルをソースに戻して覗くことが出来ます。
「jad」で検索してみるといいと思います。

3.Tomcatのソースに対してデバックとかよく分からないけど、jakarta commonsのライブラリならこの辺のじゃない?
http://jakarta.jp/commons/index.html
Httpservletにしろ、NTTデータのフレームワークにしろServletクラスは継承してるだろうと思うのでその辺を理解したらいいんじゃないですか?
Servletじゃなくて
HttpServletクラスとFliterインターフェースですね。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

プログラミング王国 更新情報

プログラミング王国のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。