一般には、サーバアプリケーションがwebrick(+ soap4rのsoaplet.rb)で閉じている場合、application scopeなサーバでなく、request scopeなサーバとすることで、問題が解決することもありますね(sample/soap/scopesample/server.rb)。
RAAなどはオブジェクトサーバを別プロセスにし、そことの間をDRbで通信、オブジェクトサーバの内部で必要な箇所を排他制御しています。
Posted by: nahi : 2005年05月05日 18:16あ、sorp4rのエラい人、nahiさん直々の回答、ありがとうございます。
なるほど、プロセスをわける方法も用意されているんですね。今回の用途を考えると、サーバプロセス以外にもメンテナンスで同じファイルを触る可能性があるので、flockを使った方がいいんだけどなぁ、と思っていたところです。試しにflockバージョンを作ってみたいと思います。
あ、sorp4rのエラい人、nahiさん直々の回答、ありがとうございます。
なるほど、プロセスをわける方法も用意されているんですね。今回の用途を考えると、サーバプロセス以外にもメンテナンスで同じファイルを触る可能性があるので、flockを使った方がいいんだけどなぁ、と思っていたところです。試しにflockバージョンを作ってみたいと思います。
あ、いえ、プロセスを分ける方法ではなく、リクエスト毎にサーバントオブジェクトを個別生成するか、もしくは1つのオブジェクトを各リクエストで共有するか、の違いです。スレッド/プロセスとは関係ありません。
共有資源がサーバントオブジェクトの中のみにできるのであれば、上記方法でなんとかなりますが、ファイルなど、外部リソースを共有する場合は、やはり別の方法が必要になります。
Posted by: nahi : 2005年05月11日 12:00