世界線航跡蔵

Mad web programmerのYuguiが技術ネタや日々のあれこれをお送りします。

2005年12月15日

RubyによるAJP1.3実装

Ruby/AJP is an implementation of AJP1.3 in Ruby. Distributed under the term of LGPL.

RubyでAJP1.3(Apache Jserv Protocol 1.3)を実装しています。Perlだと本格的なAtamiがあるわけですが、Rubyでは見付からなかったので。発端は、先日Ruby CGIからTomcatに繋ぎたい局面があったこと。

AJPの資料はjk connectorのところのぐらいで、あんまりドキュメント化されていないのでmod_jkやTomcatのソースがドキュメントだったり。TomcatにGET/POSTぐらいはできるようになったので0.1を出すけれども、あんまり期待しないでください。AJPサーバー(App server)側を実装するにはまだ機能が不足です。

net/httpに似たインターフェースを目指してるので、次はクライアントとしての機能を充実させる。サーバーの実装もできるようにしたいところ。

以下は0.1実装中の発見。

  • 良く使われるHeaderのencodeはshouldではなくmustらしい。
  • C言語による実装を想定してるようなところがある。TomcatでもJNIで書いてあるし。
  • Packetって言うのは、あくまでもAJPのレイヤーの話で、TCPのパケットとは論理的には関係ない らしい。でも、AJP packetは論理上64Kまで大きくなれるのに、小さく切って送ってるのでだいたいTCPのパケットと一対一に対応する。

AJP自体、WebServer - AppServer間の通信効率を求めた仕様なのでpure Rubyで無理に実装するよりCで拡張ライブラリ書いた方が良いかもと迷ってます。それか、せめてAPI部以外の中身はOOを捨てて思いっきりCみたいなRubyで書くとか。どうでしょう?

トラックバック

http://yugui.jp/articles/314/ping

現在のところトラックバックはありません

コメント

blog comments powered by Disqus

ご案内

前の記事
次の記事

タグ一覧

過去ログ

  1. 2016年07月
  2. 2016年01月
  3. 2015年09月
  4. 2015年08月
  5. 過去ログ一覧

フィード

フィードとは

その他

Powered by "rhianolethe" the blog system