- - PR -
非WebシステムのJavaサーブレットについて
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-11-15 08:59
お世話になります。
基礎的かつアバウトな質問で大変恐縮ですが、非Webシステム(例えばC/Sシステム)で、サーバ側のアプリケーションをJavaサーブレットで構築ということは実際に可能なのでしょうか。 Java初心者のため、色々と勉強しているところですが、サーブレットの参考文献等は、ほぼWebシステムについて書かれており、それ以外のシステムで使用する際のイメージが沸きません。 何卒宜しくお願いいたします。 | ||||
|
投稿日時: 2006-11-15 09:17
「HTTPではないjavax.servlet.Servletを動かす実装を作成する」 ということも原理的には可能のはずですが寡聞にしてそういう実装を知りませんね…。 個人的には一度やってみたいハックなのですが。 通常、アプリケーションサーバの製品はHTTP以外の通信向けの実装を持たないので 独自プロトコル用にアプリケーションサーバを拡張しなくてはなりません。 以前下調べした感じでは難易度・工数ともに高めといった感想でした(Tomcatの場合)。 アプローチはいくつかありますが、 「クライアント/サーバ間の通信のプロトコルをHTTPベースにする」 というケースが実用的かつ採用例が多いかと思います。 HTTPベースでの通信というとSOAPを用いる手などもありますし、 WebDAVなどを用いる手もありますし、HTTPで昔ながらの電文を流す設計も可能です。 | ||||
|
投稿日時: 2006-11-15 09:19
イメージとして、クライアント側の入出力処理をC/Sで行い、DBとの間にJavaサーブレット を挟むということでしょうか? であれば、Webサービス(Microsoftで言うところのXML Webサービス)が あります。もっとも、そのC/S開発言語でサポートされていなければなりませんが。 | ||||
|
投稿日時: 2006-11-15 10:29
HTTPでないサーブレット実装というと、SIPサーブレットがあります。
もちろん、それ以外のプロトコルでも可能でしょう。 | ||||
|
投稿日時: 2006-11-15 11:36
るぱんです。
webシステムって言う言葉の定義にもよるけど、 HTMLの画面が出る事をもってwebシステムっていうなら、 それ以外の実装は、考えられなくはないですね。 C/Sのソケット通信をHTTPで代替するって考えれば、 ApacheAxisなんかがそうだろうし。 クライアントがSwingで セッション張って、HttpRequestクラスのインスタンスに引数放り込んで・・・ って感じの想定。 みんなにSwingのクライアントアプリを配布する手間を考えると、 webシステムのが工数が低いしね。 もうひとつ考えられるのは、 NOSにJavaアプリが乗っかってる場合。 NOSに乗っかってるリソース情報をJavaでpush型でサーバに送りつけるケースかな? 応用として、家電が考えられるけど。 pull型でってなら、家電端末あたりにサーブレット入れるって話だけど、 端末にTOMCAT見たいなのは入れたくないですね(笑) _________________ | ||||
|
投稿日時: 2006-11-15 12:02
うーん…。
「Webシステム」というのは、「ブラウザで使うシステム」ということなんでしょうか? それとも「httpで通信するシステム」ということなんでしょうか? 前者であれば、クライアント側が望む形のレスポンスを返せばいいだけだから、 HttpServletでなんら問題ないような。 | ||||
|
投稿日時: 2006-11-15 13:01
質問の内容からすると単にブラウザベースかどうかに思えます。 例えば、クライアントはSwingやSWTをJava WebStartで起動して、 SOAPで3 Tierするのって普通のWebシステムって呼びますか? その一形態でありますが、一般的なイメージとは程遠いのでは? Webシステムにしろ、SOAにしろ、C/Sにしろ、オープン系にしろ、 手法や方針に対して広く通用する呼称を付けたに過ぎないわけで、 例え厳密な定義があったとしてもほとんどの人は知らなかったり、 個人個人で解釈が違ったりで境界付近では曖昧になりがちです。 そして境界付近が広まると、また新たな名前が付けられると。 | ||||
|
投稿日時: 2006-11-15 13:36
ていうか、Servletの仕組みそのものを、
一般的なC/Sシステムに流用できるのか、という質問じゃないのだろうか。 Javaでいえば、せっかく、いろいろな実装を施したクラスを、 「それらの実装を無視してObjectクラスとして使えますか?」てなことかと。 可能といえば可能だけど、意味がなさそう。 そもそも「一般的なモノ」というのは、たいていプリミティブすぎて使いにくいので、 「これは○○で使うモノ」という風に、ある程度の抑制を掛ける。 その結果が、ServletやCGIのような成果物、と思っていたのだが、違います? |