22:01新しいGPSS2サイト用に、バグトラッキングシステムのTracをインストールしますた。http://g2.wda.jp/tracこちらからどうぞ。Subversionのリポジトリブラウザも無事動いてます。ついでに、XMLソケットスレで面白い動きがあるようなので、それも応援。wikiが欲しいそうなので、同じくtracでSockletFunsページを用意しました。http://g2.wda.jp/funsスレの皆様、ご自由にお使いくださいませ。03:00どうにも腰が重くていけないので、自分のケツ叩くためにも一旦α版として公開します。http://sourceforge.jp/projects/gp-socketserver/からどうぞ。Eclipseのプロジェクトです。解凍して適当にEclipseにインポートしてください。このプロジェクト内のdistributeディレクトリを、gpss-2.0.0a1.zipとしてアップしてあります。実行する際は、startup.batもしくはgpss2.exeをダブルクリックしてください(Windowsの場合)。...さて、言われたそばから申し訳ないのですが、ScriptSockletは未実装です。03:00便利なもの見つけたので、早速使ってみました。http://www.ne.jp/asahi/web/ryo/exewrap/これつかって、gpss2.exeを生成してあります。(GPSS?に使うにはちょっとだけ具合が悪かったので、改良版を使ってます。)これで、「起動できないよぉ」ってことが減ると...いいなぁ。01:20GPSS1では、Sockletの配備までGPSSサーバで面倒を見ていました。接続一発目のコマンドはGPSSサーバ自体で解釈し、その後にSockletに引き渡す、というようないろいろとややこしい処理が入っていました。GPSS2ではその部分をばっさりカット。GPSSサーバは純粋にソケットの待ち受けのみに徹することになりました。するのかと言いますと、GPSSサーバには必ず1つだけデフォルトのSockletを登録するようにして、接続を受け付けると有無も言わさずそのデフォルトのSockletにクライアントを預け、コマンド処理はそちらに任せてしまう、といった処理になりました。このデフォルトのSockletを、特別にSockletDeployerと呼びます。SockletDeployerは、必ずSockletDeployerインターフェースを実装する必要があります。SockletDeployerインターフェースを実装したクラスをSeasarのDICONに登録すると、自動的にGPSSサーバにDIされます。GPSS1では接続後一発目のコマンドについてはGPSSの仕様として限定されてしまっていましたが、GPSS2ではSockletDeployer次第で如何様にも書けるようになりました。言うわけで、HTTPの受け答えも書けると思います。05:51>>GPSS1では接続後一発目のコマンドについてはGPSSの仕様として限定されてしまっていましたが、GPSS2ではSockletDeployer次第で如何様にも書けるようになりました。キタキタという感じです。汎用化に向かって前進ですねぇ。GPSS1ではうちで書いてたセキュリティー部分とか、CROSSDOMAIN部分とかが本体に食い込んでしまいソースを汚してて心苦しかったんですよねぇ。これからは必要な機能だけをよりエレガントに実装できそうですね。22:43相変わらずドキュメント、というか文章は下手なので、意味不明な表現がありましたらご遠慮なく突っ込みお願いします。気持ち悪かったので、メソッド名を変更しました。両メソッドを残してあります。アクセスコントロール処理を行うようにしましたので、Sockletを実装する段階では記述する必要がなくなっただけです。メソッドを実装する必要はあります。Socklet間の連携についてはSeasarに管理してもらうことにしたので、GPSS2では特に記述する必要はなくなりました。よって、これまた気持ちの悪かったafterDeployedLinks/allowAccessFromOtherSocklet等のメソッドは廃止となりました。クライアント管理の問題。S2のHotSwapに対応させるために、Sockletに接続中のクライアントを持たせるわけには行きませんでした。Sockletに直接接続中のクライアント達一覧を持たせておくと、Sockletを入れ替えた際にインスタンスが初期化され、クライアントが切断されてしまうためです。(多分、新しいS2のHotDeployでも同様だと思うのですが...)その他の理由もありますが、なんにしてもSockletには「状態」を持たせないことにして、接続中のクライアント等、Sockletに関する「状態」は別のインスタンスで管理することにしました。なりますと、コマンド処理メソッドの引数として「現在接続中のクライアントたち」を渡す必要が出てきてしまいまして、doCommandメソッドの仕様も変更になってしまいました。