jrcserver JRcServer:オープンソースプロジェクトJava OSS  
エンタープライズ・システムのWAS開発をやさしく、シンプルに  
| ダウンロード | 経過と実績 | 機能一覧 | 他との相違点と特徴 | 開発者です | Mail | HOME |
エンタープライズ・システム
IT用語検索


  機能一覧

  JRcServerの全てのソースコードは、私が個人で作成したもので、現在、オープンソースとして、提供しています。個人で全てを作成していることから、不具合などが発生しても、他のオープンソースと連動していないことから、全ての個所を修正範囲とすることができ、的確な対処が可能です。
  また、JRcServerを構成する内容として、JRcGateway,JRcServer,JRcClient,JRcCommons等の機能があります。これらについて下記に簡単ですが、説明します。

エンタプライズシステム

  (1) JRcGateway機能
  JRcGatewayには、サーバとクライアントの機能が存在しています。サーバ機能は、JRcServerに組み込む形で利用されます。クライアントは、JRcClientとは別のプロセスとして、JRcClientを利用するマシンのサービスとして、起動させます。 この機能は、複数のJRcServerの現在位置(IPアドレス/ポート番号)と対象サーバ名を管理しています。これによって、JRcClientは、「サーバ名@コンポーネント名」で、対象サーバのコンポーネントを実行することができます。 また、現在接続中の条件は、この機能が保持しており、JRcClientが不慮に切断されても、接続を復元することもできます。また、セッション情報は、JRcGatewayが保持しているため、実行コンポーネントがセッションテーブルを要求する場合は、JRcGatewayが、対象のJRcServerに渡します。 この機能により、1つのセッションを複数のJRcServerが利用できるようになります。(ここで言うセッション情報とは、ServletのSession機能のように、セッションテーブルで管理している情報を指しています。)
  また、接続が確立している各JRcServerの、ユーザ管理のキャッシュをJRcGatewayが、持つようにします。これによって、JRcClient→JRcGateway→JRcServerのような認証経路ではなく、JRcClient→JRcGatewayで済むため、高速で認証する事が可能です。 この機能で、JRcClientの起動毎に、接続確立や、サーバ検索などを行う必要がなくなるので、JRcClientを頻繁に起動する場合には、有効な機能です。また、UDPによる独自通信(com.JRcServer.net.uio)によって、通常のSocket接続と違い、接続数が大幅に増えた場合でも、一定以上のリソースを消費しない利点と、高速転送の利点があり、通信情報をキューに格納するため、確実な通信条件が提供出来ます。
  (2) JRcServer機能。
  JRcServerには、JRcServerの基幹部分として、コンポーネント管理や、コネクションユーザ管理機能や、コンポーネントネーミングサービスが存在します。また、JRcGatewayのサーバ機能を組み込んでおり、この機能によって、JRcClientと接続を行います。
  (実際にはJRcServer→JRcGateway→JRcClient の順番で通信処理を行います)
  JRcServerは、実行対象のコンポーネントがJRcClientによって選択された場合に、JRcServerに登録されているコンポーネントネーミングサービスによって、Java形式のコンポーネント名(java.lang.Stringのような形)に変換して、実行する機能を持っています。また、コンポーネント名のヘルプ機能が見たい場合も、同様の手順で、登録されているコンポーネントのヘルプ内容を返します。
  (3) JRcClient機能
  JRcClientには、2つの機能があり、テキストコンソールから直接入力が可能なドライバ機能と、プログラム内で利用するコネクション機能があります。利用方法としては、ドライバ機能では、Shell-Script経由で、コンポーネント実行を行うことが出来、保守作業時の緊急作業でも、直接キー入力で利用することが可能です。コネクション機能は、プログラム内からメソッドを経由して利用することが出来ます。
  また、1度認証されたユーザは、JRcGatewayにキャッシュされるため、高速ユーザ認証を行うことが可能です。
  (4) JRcCommons機能
  JRcCommonsには、下記のように様々な基本機能が存在しています。
  • 分散環境
      分散環境として、Naming-ServiceをMulticast(com.JRcServer.net.mgc)で、電文交換を独自規格のUDP(com.JRcServer.net.uio)で実装しています。
      この機能のうち、独自規格のUDP(com.JRcServer.net.uio)は、UDPの特性上である、電文ロストを考慮した作りになっており、確実に電文が相手に届きます。また、Socketとは違い、接続毎のコネクション確立は必要なくなるため、多くの接続を実現する場合に、有効となります。
      そして、通信を確実なものにするために、電文をキューで管理しています。これによって、確実に相手に届く通信処理を実現出来ます。
      これらの機能は、今回のような分散環境で利用する場合は、最適であると考えています。
  • 暗号技術
      独自暗号として、2つの暗号方式(com.JRcServer.etc.ScIO)と(com.JRcServer.etc.CodeBase32)を提供します。上記の2つの暗号は、EOR(排他的論理和)による単純暗号です。単純であるため、通常の通信処理で利用しています。
  • クラスローダ(com.JRcServer.sys.loader)
      基本的にURLClassLoaderで、デプロイの管理をします。JRcコンポーネントや、JRcプラグインをデプロイする場合に利用します。また、URLClassLoaderの利点を使って、HTTPやFTP上のコンポーネントからも、利用できます。
  • Resource管理 and Spaceキャッシュ
      Java言語は、ガページコレクタでメモリ解放を行うため、短い期間で膨大なメモリを利用した場合に、OutOfMemoryErrorが発生することがあります。これを回避するために、ファイルキャッシュ(com.JRcServer.space.Space)を利用できるリソースオブジェクト(com.JRcServer.resource)を用意しました。これによって、それほどパフォーマンスの落ちないキャッシュ構造をメモリと同じように利用できます。(com.JRcServer.resource.BinResource)。 また、これによって、上記致命的となるOutOfMemoryErrorは発生しずらくなりました。
  • Connection-Pooling(com.JRcServer.sql.pool)
      データベースのコネクションプーリング機能を提供します。
  • LogWriter(com.JRcServer.sys.log)
      JRcServerがデフォルトで利用するログ(com.JRcServer.sys.log.UrgentLog)や各コンポーネントやプラグインから利用することを考慮したカスタムログ(com.JRcServer.sys.log.custom)などの機能を有します。
  • スレッド管理(com.JRcServer.threadl)
      スレッドの動作状況や、デットロックを起こしにくいオブジェクトなどを提供します。また、スレッドの生成/破棄がデフォルトログ(com.JRcServer.sys.log.UrgentLog)に表示される機能もあります。
  • ユーティリティ群(com.JRcServer.util)
      JRcServer全体が利用することを考慮した、ユーティリティ群です。
| ダウンロード | 経過と実績 | 機能一覧 | 他との相違点と特徴 | 開発者です | Mail | HOME |