RSS/1b ファイル構成

【org.logical_paradox.rss】
　RSS/1bに関する一般的なクラスが格納されています


org.logical_paradox.rss.IllegalObjectStateException.java
　オブジェクトの状態が不正な場合にスローされる例外クラスです．
　IllegalStateExceptionと同じ意味です．



【org.logical_paradox.rss.http】
　HTTPプロトコルやWebページの情報操作に関するクラスが格納されています


org.logical_paradox.rss.http.ContentsFilter.java
　Webコンテンツを加工する際に使用する，フィルタクラスの抽象形です
　このクラスの派生クラスをWebContentsクラスに追加すると，取得したWebページの内容
　をフィルタリングして取得することが出来ます

org.logical_paradox.rss.http.EncodingContentsFilter.java
　ContentsFilterのサブクラスで，エンコーディング変換機能を持ちます．
　今の段階では使っていません．今後廃止される場合もあります．
　中身については意味がありません

org.logical_paradox.rss.http.HREFCollector.java
　HTMLデータからアンカータグだけを抽出するユーティリティです．
　javax.swing配下にHTMLのparserみたいなクラスがあったと記憶しているので，今後廃
　止される可能性はあります

org.logical_paradox.rss.http.HTMLContentsFilter.java
　ContentsFilterのサブクラスで，HTML文書をplain text文書へ変換するフィルタです．

org.logical_paradox.rss.http.WebContents.java
　Webから取得したコンテンツを管理するクラスです

org.logical_paradox.rss.http.Site.java
　サイト情報を格納するクラスです

org.logical_paradox.rss.http.RobotAcceptanceRule.java
　robots.txtを管理するクラスです

org.logical_paradox.rss.http.RobotAcceptanceRule.UserAgentRuleDirective
　robots.txtのUser-agentに関するDisallowを管理するクラス(RobotAcceptanceRuleの
　innerクラス)です

org.logical_paradox.rss.http.URLPool
　未探索URLを保持するクラスです．内部的にはFQDN別に管理されます

org.logical_paradox.rss.http.URLSuspender
　探索抑制状態を管理するクラスです．URLがFQDN別に登録されています．ここに登録さ
　れているFQDNに対しては，探索が行なわれません



【org.logical_paradox.rss.logging】
　ログ処理を行なうためのクラスが格納されています


org.logical_paradox.rss.logging.RSSDebugLogWriter.java
　RSSLogWriterのサブクラスで，デバッグトレースログを出力するためのログライター
　です．
　デバッグログライターは，ロボットの動作を細かくレポートします
　rsswebspider.confのROBOT_SW_DEBUG_TRACE_LOGがONになっていると動作します

org.logical_paradox.rss.logging.RSSLogWriter.java
　全てのログライターの基底となる抽象クラスです．



【org.logical_paradox.rss.robot】
　サイト探索を行なうためのロボットが格納されています


org.logical_paradox.rss.logging.RSSIllegalConfigException.java
　設定ファイルを検査した際に，何らかのミスが発見された場合にスローされる例外クラ
　スです．

org.logical_paradox.rss.logging.RSSWebNavigator.java
　エージェントが次にどのURLを処理するべきかを決定する，経路ナビゲータです．
　また，既に探索が完了したURLをマスターの経路決定ノードへ転送したり，同期をとっ
　たりします．
　サイト探索アルゴリズムは，マスターの経路決定ノードと同じものが使用されます．

org.logical_paradox.rss.logging.RSSWebSpiderAgent.java
　Webサイト探索処理を実際に行なうためのエージェントプログラムです．
　エージェントプログラムはスレッドとして動作し，ロボットが生成された段階で，設定
　ファイルで指定されているだけ同時に作成されます．
　全てのスレッドは最初から最後まで利用され，途中で消滅したりしません．

org.logical_paradox.rss.logging.RSSWebSpiderRobot.java
　Webサイト探索のエージェントプログラムを管理するロボットです．
　探索に必要なオブジェクトを起動時に生成し，あとはときどき経路ナビゲータの状態を
　参照するだけです．
　経路ナビゲータが"終了可能な"状態を示していることを確認すると，全てのエージェン
　トを停止させてから終了します．
　staticのmainメソッドが実装されています

org.logical_paradox.rss.logging.RSSWebSpiderConfig.java
　RSS/1bシステムのコンフィギュレーションを管理するクラスです．
　コンフィギュレーションの内容が常に正しいことを保証します．



【org.logical_paradox.rss.robot.event】
　RSSWebSpiderAgentで発生するイベント通知に関するクラスが格納されています


org.logical_paradox.rss.robot.event.RSSWSAgentAdapter.java
　RSSWSAgentListenerインターフェースのアダプタクラスです．
　今のところ使っていませんし，今後もたぶん必要ありません．

org.logical_paradox.rss.robot.event.RSSWSAgentEvent.java
　エージェントに何か変化が生じた場合に発生する，イベントオブジェクトクラスです

org.logical_paradox.rss.robot.event.RSSWSAgentListener.java
　エージェントに何か変化が生じた場合のイベントリスナーインターフェースです．
　今はRSSWebSpiderRobotがインプリメントしています．
　onConnect()メソッドはエージェントがサイトへ接続した場合に呼び出され，onClose
　メソッドはサイトから情報の取得を完了した場合に呼び出されます．



【org.logical_paradox.rss.router】
　サイト探索の順番を決定するためのルーティングシステムが格納されています．


org.logical_paradox.rss.router.RSSContentsContainer.java
　取得したWebコンテンツの情報をネットワーク上でやりとりするためのコンテナです．
　マスターのサーバーとロボットの間はRMIで接続されるため，シリアライズ可能な形式
　になります．基本的にread onlyなクラスです

org.logical_paradox.rss.router.RoutingMgr
　探索ノード(Web探索ロボットが走行しているシステム)を複数管理しているクラスです
　このクラスでは複数の探索ノード間での情報共有処理を行なったり，探索ノードがどの
　Webサイトを探索するかを大筋で決定したりします．

org.logical_paradox.rss.router.RNodeClientFactory
　RoutingMgr(経路決定ノードクライアント)を生成するファクトリインターフェースです．
　生成した経路決定ノードクライアントを実際に管理したりもします．解説中で「ファクトリ」と言った場
　合はこのクラスを指し，「経路決定ノード」と言った場合はこのクラスと，このクラス
　が保持する経路決定ノードクライアントを意味します．
　RNodeClientFactoryはインターフェースで，RoutingFactoryImplがその実装です

org.logical_paradox.rss.router.RoutingFactoryImpl
　経路決定ノードクライアント生成子の実装です

org.logical_paradox.rss.router.RoutingNodeClient
　探索ノードが経路決定ノードに対してアクセスするためのリモートインターフェースで
　す．探索ノードはこのインターフェースを介して経路決定ノードとの通信を行います．
　探索ノード1つにつき，1つのインスタンスが割り当てられます

org.logical_paradox.rss.router.RoutingNodeClientImpl
　上記リモートインターフェースの実装です

org.logical_paradox.rss.router.RSSRoutingNodeConfig
　RNodeClientFactoryが使用するコンフィグオブジェクトです

org.logical_paradox.rss.router.RSSRoutingNodeSelector
　経路決定ノード選択子のインターフェースです．
　このクラスでは，探索ノードがどの経路決定ノードへサービスインするかを決定します

org.logical_paradox.rss.router.RSSRoutingNodeSelectorConfig
　経路決定ノード選択子サービスのコンフィグです

org.logical_paradox.rss.router.RSSRoutingNodeSelectorImpl
　上記インターフェースの実装です

org.logical_paradox.rss.router.SiteLock
　探索ノードがロックしているサイトを表すクラスです．
　1サイトにつき1つのインスタンスが生成されます．

org.logical_paradox.rss.router.SiteLockMgr
　上記探索ロックオブジェクトを管理します．



【org.logical_paradox.rss.router.algorithm】
　経路決定アルゴリズムの実装が格納されています．


org.logical_paradox.rss.router.algorithm.LBRoutingAlgorithm
　負荷分散探索法を実装したクラスです．
　RoutingAlgorithmのサブクラスです

org.logical_paradox.rss.router.algorithm.FIFORoutingAlgorithm
　先入れ先出し(FIFO)によるサイト探索法を実装したクラスです．
　デフォルトはこれが選択されます．このアルゴリズムは，URLが格納された順番に探索を
　行なうだけの，非常に単純なものです．
　RoutingAlgorithmのサブクラスです

org.logical_paradox.rss.router.algorithm.RoutingAlgorithm
　経路決定アルゴリズムを実装するための抽象クラスです．
　このクラスを派生させて，アルゴリズムを実装します．

org.logical_paradox.rss.router.algorithm.RoutingHistory
　探索履歴を管理するクラスです



【org.logical_paradox.rss.tools】
　RSS/1付属のツール類が格納されています．

【org.logical_paradox.rss.tools.rsm】
　RoutingSystemMonitor(rsm)が格納されています．



【org.logical_paradox.rss.util】
　さまざまなユーティリティを格納しています．


org.logical_paradox.rss.util.RandomKeyGenerator
　印字可能でランダムな文字列を生成する生成器です．
　ロボットの名前を決定するために使用されています．

org.logical_paradox.rss.util.I18nProperties
　java.util.Propertiesクラスの拡張で，日本語文字列などをUnicodeで取り込むことが
　できます．



【org.logical_paradox.rss.wcs】
　Webコンテンツサーバー(WCS)関係のクラスが格納されています

