トップページ⇒tech
983コメント352KB

JavaサーブレットQ&A LV2

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさんNGNG
サーブレットに関する疑問・質問はこちらで。
0933デフォルトの名無しさんNGNG
HttpSession session = request.getSession(true);

この意味わかる方教えてください!
0934デフォルトの名無しさんNGNG
セッションがあればそれを使う、なければ新しく作る
0935デフォルトの名無しさんNGNG
>>934
ありがとう。trueの意味は何?
0936デフォルトの名無しさんNGNG
真
0937デフォルトの名無しさんNGNG
>>936
この場合、trueとfaulseの違いはわかる?
0938デフォルトの名無しさんNGNG
少しは自分で調べろよ
0939デフォルトの名無しさんNGNG
>>938
どうやって調べるの?
0940デフォルトの名無しさんNGNG
本を見るとか、Web で検索するとかさ。
0941デフォルトの名無しさんNGNG
>>940
ここで調べてるつもりですがなにか?
0942デフォルトの名無しさんNGNG
やれやれ。
0943デフォルトの名無しさんNGNG
>>941
ちんちんむれむれ
0944デフォルトの名無しさんNGNG
Parameters:
true - to create a new session for this request if necessary; false to return null if there's no current session

ほれ、これだろ。
0945デフォルトの名無しさんNGNG
つーか、そんなんわからないでプログラムが組めるのか?
0946デフォルトの名無しさんNGNG
>>945
組む分には組めると思われ。
周りが泣きを見るのだろうが。
0947933NGNG
>>946
SEでもPGでもなく、ただの大学生ですが何か?
0948デフォルトの名無しさんNGNG
たくさん釣れた。
0949デフォルトの名無しさんNGNG
>>933
APIの見方覚えるべし。
http://www.ingrid.org/jajakarta/servletapi/servletapi-4.0/docs-ja/javax/servlet/http/HttpServletRequest.html#getSession(boolean)
0950デフォルトの名無しさんNGNG
>>947
このスレの人が迷惑してますが?
0951デフォルトの名無しさんNGNG
つか、ネタでしょ。
放置放置。
0952デフォルトの初心者NGNG
あの、Javaはクライアントアプリいくつか作って遊んでたんだけど、サーバープログラムもやってみようかな?と思ってるのですが、まず初心者ならがに次の疑問があります、誰か教えてください。

1.1000人アクセスしたら?

 たとえば1000人のユーザーが同時にアクセスしてきたら、1つのVMに1000個のサーブレットアプリが立ち上がるのだ・・と思っているのですが、これは正しい?だとすれば、相当なメモリを食いそうだし、そもそもVMがちゃんと安定して動くのか不安・・・。

2.VMが落ちたら?

 なんらかの事情でVMが落ちた場合、どーなるんでしょう?
てゆーか、そういうこと実際あるでしょ?再起動の仕組みとかないと
困ると思うのですが、そこらへんはみんなどうしてるんでしょうか?
0953デフォルトの名無しさんNGNG
本買って嫁
0954デフォルトの名無しさんNGNG
>>952
Javaではそんな負荷に耐えられません。
順番待ちさせて、同時に処理する個数に上限を設けましょう。
0955デフォルトの名無しさんNGNG
VMが落ちたら・・・全てのセッションがアボートしてしまいます。
サーバーには自動的に再起動するなどの仕組みを用意しておくべきでしょう。
データの整合性を保つためにも、データはDBにストアしましょう。

しかし、極端な過負荷状況(主にメモリ)にしなければ、イマドキのVMは落ちません。
どの程度の負荷まで耐えられるか調べ、
それより十分低い状態で稼動するような仕掛けを用意するのがポイントです。

また、どんなに安定稼動していても、わずかなリソースリークが発生している
可能性があります。無用の心配を避けるためにも、週に一度はリブートする
ことをオススメします。

以上、Javaとはあまり関係の無い話題でした。sage。
0956 NGNG
>>952
以前試した。WinNT/2k で 510 スレッド、IBM AIX で 1020 スレッドを
超えたあたりから Java VM が不安定になり始める (というか同一インス
タンスに対する wait/notify/synchronized がこの数くらいから機能
しなくなる)。Tomat みたいなサーブレットコンテナは普通「最大受付
可能リクエスト数」が設定できるので、スレッド発生の上限も制御できる。

VM が落ちた時のリカバリーの仕組みは商用アプリケーションサーバレベル
になると付いてくる。たとえば WebSphere は Java VM のプロセスが
落ちても nanny (監視プロセス) が検知して勝手に立ち上げ直してくれる
(ホットスタンバってる奴に切り替えるよりは早い)。Tomcat 等を使うなら
別途仕組みを作りこまなきゃいけないだろう (多分)。
0957デフォルトの初心者NGNG
ご意見ありがとうございます。
サーブレットは1000人アクセスに耐えられないかぁ・・
ちょっと今面白い事を考えてて、URLをTVで公開して瞬間的に1000人程度の人に携帯電話やパソコンからアクセスしてもらって、そこでサーブレット動かす・・ってのを考えてるんだけど、Javaじゃキツそうだね。CGIにするか・・
0958デフォルトの名無しさんNGNG
>>957
CGI でも Java でも同じ。そもそも Apache がどれくらい上がるんだ?
普通そういうのは鯖 4〜 台にロードバランサーとかでクラスタ組む。
0959デフォルトの名無しさんNGNG
つか、CGIだったら、1000スレッドどころか1000プロセスだぞ?
0960デフォルトの名無しさんNGNG
CGIで1000プロセス…

>>956
ハードの構成は?全く関係無いとも言えないだろ。
0961デフォルトの名無しさんNGNG
>>958
へー、ロードバランサーかぁ、初めて知った、難しそうだね…
こいつらにTomcat突っ込んでDBを共有すればいいのか?
全然わからん・・・

0962デフォルトの名無しさんNGNG
>>961
ロードバランサの意味わかってるか?
クラスタの意味わかってるか?
きっとお前が思ってるのの300倍くらいは面倒だぞ。
0963デフォルトの名無しさんNGNG
>>962
今知ったばっかりで何にもわかってません、そんな難しいのかぁ・・
少しずつ勉強します。
0964デフォルトの名無しさんNGNG
>>960
これ以上は守秘義務だ。自分で手動かせ。
0965デフォルトの名無しさんNGNG
>>962
Tomcatでロードバランスすんのがそんなに面倒か?
0966デフォルトの名無しさんNGNG
>>965
彼には未知の領域なんだよ
0967デフォルトの名無しさんNGNG
彼のプロジェクトがデスマーチ化するのに、100000インスタンス!
0968デフォルトの名無しさんNGNG
見積もりが狂ってポシャるのに1000コネクション
0969デフォルトの名無しさんNGNG
クッキーをサポートしないブラウザがセッションIDを
維持する為に、JSPやサーブレットに書かれているフォームや
リンクなどのURLを response.encodeURL(path/to/xxx.jsp)
しますよね。

これをいちいち書くのは面倒くさくないですか?

PHPの場合、クッキーが有効になっていない場合、セッションIDを
PHPファイル内の全てのフォームやリンクのURLに自動的に
付加(つまり <a href="path/to/xxx.php"> を <a href="path/to/xxx.php?sid=123456">
に勝手に変換してくれる)する機能がありますが、
JSP、サーブレットにはこのような機能はないのでしょうか?

またはいちいち encodeURL() を書かなくてもいい方法が
あるのでしょうか?
0970デフォルトの名無しさんNGNG
>>969
商用なら普通ある機能だと思うが。
サーブレットコンテナはどこの使うとる?
0971デフォルトの名無しさんNGNG
>>969
JSPを利用するなら<a></a>を使わずに、
リンク用のカスタムタグを利用することで対処する。
<html:link href="http://www.2ch.net">http://www.2ch.net<;/a>
0972デフォルトの名無しさんNGNG
>>971
Jakarta の Taglib 使えと言うとるのか、拡張タグライブラリ作れと
言うとるのか分からんが、その程度の機能なら勉強がてら拡張タグを
使ってみるのも良いと思う。あれは作り始めるとめちゃくちゃ面白い。
0973デフォルトの名無しさんNGNG
>>972
どちらでも好きな方で
0974デフォルトの名無しさんNGNG
JSPの掲示板
ttp://www.logos.co.jp/development/javahello/jspbbs.htm
0975デフォルトの名無しさんNGNG

【サンがアプリケーション・サーバーを無償配布】
米サン・マイクロシステムズは19日(米国時間)、Javaベースのアプリケーション
サーバー『Sun ONE Application Server 7』のうち、『Platform Edition』を
無償配布すると発表した。5月の『Solaris 9』の発表の際にOSにバンドルする
ことを表明していたもので、Solaris以外のユーザーが無償利用できるようになる。
対応OSはSolaris、Linux、Windows、HP-UX、AIX。Platform Editionのほかに
『Standard Edition』『Enterprise Edition』があり、Platform Editionと
Standard EditionのSolaris版とWindows版は9月にリリース予定。サンは無償
配布することで、米マイクロソフトが進めている『.NET』に対抗する。

http://japan.cnet.com/News/Flash/2002/2002-0620-F-1.html?mm

.NET に対抗っていうか HP のアプリケーションサーバ無料配布とか
BEA WebLogic, IBM WebSphere に対抗するシェア拡大策だろうな。
0976デフォルトの名無しさんNGNG
>>975
無料だからってSIベンダが使うかねぇ?
まだ高い方が利益抜けるからいいんじゃない?
0977デフォルトの名無しさんNGNG
>>976
そもそも Platform Edition なんて SIer 入れるほどの開発には不十分と
思うが。利益の薄い底辺を切り離したように見える。
0978デフォルトの名無しさんNGNG
Tomcat使うよりずっとましだろ?
0979969NGNG
>>970
Resin使ってるけど、そんな機能あるかなぁ??

>>972
Jakarta Taglibに >>971 が言うような機能のTaglibは
ありましたっけ?
0980デフォルトの名無しさんNGNG
>>979
Resin は知らんが、WebSphere ならコードや JSP の書き換えなしに
セッションの維持方法を Cookie か URL Rewrite の選択ができる。
WebLogic や JRun もできたような記憶がある。
0981デフォルトの名無しさんNGNG
>>980
そりゃ便利だね。
でもまぁStruts使うなら、どっちにしろ、リンクタグ使うからなぁ。
0982デフォルトの名無しさんNGNG
>>980
WebSphereは、AEだとCookieとURL書き換えと両方同時設定できるが
AEsではどちらかになってしまった気が。

おっ、イングランド先制。
0983デフォルトの名無しさんNGNG
負けちゃったね・・・
レス数が950を超えています。1000を超えると書き込みができなくなります。