読書会(More Java Pitfalls)第6回議事録

[ 戻る ]


読書会(More Java Pitfalls)第6回議事録
日時   : 2003/10/25 10:00 - 16:50
参加者 : 村山さん、金井さん、武川、中村さん、根本さん、高橋さん、村上さん
場所   : 東山住区センター 第一会議室
書記   : 武川

■Item 30の途中 
 正規表現のはなし

 ・PerlでもOSによって正規表現の互換性がない場合がある。
 ・Possesive quantifies の意味は? 
 ・greedy macth operationは、正規表現は標準なのではないのか?
 ・P.267 Listing 30.1 の PatternとMatcherの動作がよくわからない。
   (コード動かさないと意味が理解できない)

■Item 31
 サーブレットのインスタンス変数を使用する危険について

 ・スレッドのバグはかなり厄介

■Item 32
 JDBCコネクションを再利用することについて

 ・init()じゃなくてdoGet()でSingletonを呼びだしてもよいのではないか?
   →そんなことはない。シングルトンの生成は同期メソッドだから呼出しは少ないほうがよい。
 ・駄目なシングルトン:オブジェクトがなければオブジェクトを作るというのが問題。
   →この場合遅延インスタンシエーションではなくて、直接フィールドで生成したほうがよいのではないか?
 ・Listing15.1 と Liting15.2 が参考になる。

■Item 33
 1つのServlet中でServletOutputStreamとPrintWriterを両方使うべきではない

 ・日本語を扱う場合にWriterを使うべきなのか?
  →Tomcatで試したところ、ServletOutputStreamでも日本語が動作した。(encodingの設定をcontentstype(windows-31J)にした)
  →文字ならばWriterを使えということだが、OutputStreamだけで使っておくほうがよいのではないか?
  →JSPからincludeやforwardしている場合にこの問題が発生する可能性あり。
  
  この後の話題はついてゆけなかったです。ごめんなさい。

 ・性能はどっちが速いのか? (Writerの方がバッファの取り方がよいような気がする)

■昼休み
 ・O/RマッピングとEJBのはなし等
 ・JBoss入門はいいほんだ。


■Item 34
 file:のURL表記について

 ・ドライブレターを使ったURLについての規格はないか? 
 ・RFC2396 はhttp://www.ietf.org/rfc/rfc2396.txtで参照できる
 ・Netscapeでのfile:でファイルが見えるから、Windows固有の話ではないようだ。
 ・Unix(Linux)の場合、絶対パスを使うと//という表記が出来るがが、これでファイルとして動作するのか?
 ・RFCの付録にはBNF記法でURLの定義が書いてある
 ・RFC2396の定義に3つ以上のスラッシュを許さないと定義されているのか?
   →BNF記法では、
      net_path      = "//" authority [ abs_path ]
      abs_path      = "/"  path_segments
     のようになっているので、許されないのではないか?

 ・URLに似たようなものとしてURIがある。これも絡んでくるとさらに訳がわからない。
 ・Web関連は実装が仕様より先行している場合が多い。
 ・カレントドライブのファイルはドライブ指定する必要はない。カレントドライブが、OSの起動したディレクトリか、Javaの起動したディレクトリかは実験する必要があり。

■Item 35 
 Servletでのファイル読み込みについて

 ・context.getRealPath()がnullを返すのは仕様?
   → APIの仕様
 ・Tomcat4.Xでwarを使用した場合にもgetRealPath()がnullを返すのか? ダイナミックにWARが展開されるのでもしかしたら見えるのかも(要おためし)。
 ・Servletは絶対パスを使って、どのようなパスにでもアクセスできるのか?
   →できるはず。セキュリティな問題はプログラマもしくはファイルシステムのパーミッションで制限する。
 ・context.getResource()の引数となるパスの仕様はどうなっているのか? ".."とかは使用できるのか?
 ・このweb.xmlの例は、前のサーブレットの値を設定していない。→わかりにくい
 ・タグ中に定義される
 ・Filter Servlet というのもある。これも、InitParamタグをもっている。
 ・書きこみのときはどうするの?
   → StillBadReadingServletの書きこみ版をつくるしかない(warには書けないよね)

■休み時間
 
 ・Windows で管理者権限とユーザ権限を使い分けるはなしについて話題になりました。 run as というのが

■Item 36
 複数回のsubmitに対処する方法について
 
 ・Formのかきかえができるということは、信頼できないデータがサーブレットに送られる可能性を考える必要がある。
 ・Webシステムに関するセキュリティの問題をまとめたもの(標準)はなにかないのか?
   →ごめんなさい。探したのだけれど見つけられませんでした。
 ・SessionでOut of Memoryをおこすにはどのくらいメッセージを送ればいいの?
 ・SessionでOut of Memoryがおきる前に他の部分に問題が出そうな気がする。
 ・Max active session(tomcat)を定義すれば、問題がおきないのでは?
 ・携帯電話用のアプリケーションでは、できればセッションは使いたくない。
  (多くの人が少ないアクセスをするためリソースが厳しい)
 ・setRedirectとforwardの違いは?
   →setRedirectはクライアントにリダイレクトするようなレスポンスを返す。
     forwardは別のServletに委譲する。
 ・Listing 36.3 のコードは動作しないのでは? countがstatic変数はまずい。
 ・Listing 36.4 のコードは動作しないのでは? Line31のセッションはどうやったらnull以外になるのか? 
   → Line 39あたりに sessionの作成と、sessionattributeの設定をしているならば動作しそう。
   → サンプルを動かしたけど、購入できない。やっぱりコードがおかしいのでは?
 ・Listing 36.3 の Line 20 の gerRequestedSessionIdとはなにか?
   →Session IDを取得するメソッド sessionインスタンスを
 ・WebブラウザのJavaScriptでフォーム情報の改竄を防ぐ方法はないのか?
   →ないとおもわれる
 ・この本の例題は、問題を混乱させるのであまりよくない。
   →More java pitfalls pitfallsを作る必要あり。

■Item 37 

 今後のItemの概要 J2EE関連の話題になるようだ。


[ 戻る ]