では、わたくしめが知っている範囲でServletの辛さについてご説明申し上げます。

10
Jxck @Jxck_

Servlet は結構普通というか、余計なもののない素直なイメージだったけど Play とか Servlet 捨ててた気がする。どういう判断だったんだろ。

2015-03-26 12:28:27
太一 @ryushi

では、わたくしめが知っている範囲でServletの辛さについてご説明申し上げます。

2015-03-26 12:31:47
太一 @ryushi

Servletはmultipartの公式サポートに時間かけ過ぎた。ファイルアップロードってウェブアプリケーションではよくある要件ではあるまいか?そして、よくあるけども難しいものでもある。

2015-03-26 12:32:43
徳永広夢 @tokuhirom

@ryushi たしかに! そして、multipart サポートオンにするために container 毎に設定必要なのは、まあ辛いですね。

2015-03-26 12:33:29
太一 @ryushi

次に、認証系の辛さがヤバい。例えば、JAASとServletをちゃんとつなげるのは、結構難しいんですけども、上手くやるとアプリに手を入れずにLDAPと繋がったりするんですが、みなさんご存じですか?

2015-03-26 12:33:41
太一 @ryushi

CookieのAPIがプリミティブ過ぎる。何故Mapっぽいインターフェースじゃないのか。変な風にラップされているので、書き戻しが面倒。で、セキュリティ界隈では大人気のhttponlyの公式サポートがServlet3.0です。それまで大変な苦労をしてhttpOnlyを付けていました

2015-03-26 12:36:51
太一 @ryushi

功罪両方あるものしとしては、HttpSessionのデフォルトサポート。これは非常に便利なんですけども、APサーバのスケールアウトを強く阻害するのでシステムが大規模化する際に足を引っ張る原因になります。つまり、毒饅頭ってやつです。

2015-03-26 12:40:48
太一 @ryushi

そうそう、みんな大好きJSPというのもServletの一部ですね。taglibのtldファイルに書く内容の意味不明さは、どこから突っ込んで良いか分かりません。というか、taglibの仕様が全般的にヤバい辛さです。doStartTagとかdoAfterBodyの戻り値intですよ?

2015-03-26 12:44:53
Jxck @Jxck_

@ryushi デフォルトでセッション Cookie 発行するのって Servlet だけの問題でもなくありませんかね?対策としてあるコンテナ相当の Cookie の共有機能が弱いという問題は別であるかもですが。(ただし、セッションオブジェクト丸っと cookie 派は除く)

2015-03-26 12:45:24
Jxck @Jxck_

そういえば、 Tomcat はセッション Cookie を外部ストレージに出すんじゃなくて、指定した Tomcat クラスタ間で UDP で同期するとかいうトンデモ実装があった気がしたけど、あれって使われてるんだろうか。

2015-03-26 12:46:43
太一 @ryushi

@Jxck_ セッションCookieを発行することが問題なのではなく、凄く使い易い所にgetSessionみたいなメソッドが生えている事を問題視しています。

2015-03-26 12:46:50
Jxck @Jxck_

Servlet って HttpSession session= request.getSession() とかだっけ?うろ覚えだ。。

2015-03-26 12:49:05
太一 @ryushi

@Jxck_ あれによって、Statefullなウェブアプリケーションを作りたくなるし、作り易くなるのだけども、後で辛いことになり易いと言えば良いのかな。

2015-03-26 12:50:08
Jxck @Jxck_

@ryushi たぶん、わかりますが、 それは Servlet の問題というかどのプラットフォームでも同じな感がありまして。

2015-03-26 12:52:23
太一 @ryushi

ServletのHttpSession#setAttributeには第二引数にObjectを取るんですけどもSerializableでないものを設定するのは望ましくありません。何故そうなのか?どんな時に問題なのか?適切に説明できるエンジニア少ない。

2015-03-26 12:54:23
太一 @ryushi

@Jxck_ 他のプラットフォームと比べて辛いって話ではないですよ。多分、どんなプラットフォームでも辛い話になる。

2015-03-26 12:55:13
Jxck @Jxck_

@ryushi 把握です。割り入ってすいません、お続けください。

2015-03-26 12:56:20
太一 @ryushi

ServletというのはHTTP以外のプロトコルも抽象化の範囲に含まれている為ServletRequestとHttpServletRequestという継承階層になっているんですけども、これって物事難しくしただけです。例えばSipServletって使われてるの?

2015-03-26 13:00:26
太一 @ryushi

@regtan 日々感謝!精進!鍛練!

2015-03-26 15:02:26
れぐたん @regtan

@ryushi 感謝のeclipseのコード音読1万回

2015-03-26 15:11:15
太一 @ryushi

@regtan JVMのコードを日々手書きで模写します!精進!精進!

2015-03-26 15:15:10