ID Kicker v0.9a用 ID Connector 開発者ガイド


ID Kickerのサーバサイド開発へようこそ。

Webアプリケーションアーカイブ、Kicker.warは下記を含みます。

  • 横浜工文社のサイトで現在動作中のデモアプリケーション(バイナリとソース)
  • ID KickerとあなたのサーバサイドWebアプリケーションとをつなぐID Connector(connector.jar)

デモアプリケーションについて

 

Demo #1とDemo #2はそのまま設定不要で動きます。 Webアプリケーションサーバのアプリケーションディレクトリ(Tomcatの場合はwebapp)にKicker.warを置いてWebアプリケーションサーバを再起動してください。

Demo #3(英語版または日本語版)を実行するには、Berkeley DB for Java EditionをWebアプリケーションサーバの共有ライブラリディレクトリ(Tomcatの場合shared/lib)に置く必要があります。 続いてWEB-INF/web.xmlを編集してデータベースディレクトリ(デフォルトは/var/kicker)を指定してください。

デモアプリのテストはWindowsとLinuxの両方で行いました。 Bekeley DB Java Editionはバージョン1.7.1を使用しました。事情により古いものを使ってますが、このデモの目的には十分です。最新版でも問題なく使用できると思います。

 

ID Connectorの使用方法

 

ID Kickerは、IDを読み込むと、設定ダイアログボックスの通知サーバのURLで指定されたURLにIDを送ります。 そして、Webブラウザを起動し、設定ダイアログボックスのアプリケーションサーバのURLで指定されたURLに接続します。 下記のとおり、あなたのアプリケーションに接続するURLには「id=<16進ID文字列>」というクエリー文字列が追加されます。

  http://www.ssjava.net/demo?id=0274e4be3d

あなたのWebアプリケーションでは、ふたつあるうちのいずれかの方法でID Kicerがサーバに送信したIDの通知を受けることができます。 このチェックにより、あなたのアプリケーションに送られてきたIDが偽者ではなく、確かにカードリーダーに置かれたものであることを確認することができます。

#1 getSwipeTime()

 

connector.jarの中のkobu.rfid.ConnectorUtilクラスはgetSwipeTime()という静的メソッドを提供します。 このメソッドを呼び出して、あなたのWebアプリケーションに渡されたIDが、ID Connectorに通知されたものかどうか判断できます。 このとき、実行中のアプリケーションのServletContextを渡す必要があります。 これはサーブレット内でgetServletConfig().getServletContext()を呼び出して取得できます。

  package kobu.rfid;
  public class ConnectorUtil
  {
    public static long getSwipeTime(javax.servlet.ServletContext cnt, String id)
    {
      ...

getSwipeTime()はID ConnectorにIDが通知された時刻を1970年1月1日深夜からのミリ秒の値(long)で返します。 web.xmlに指定されたタイムアウト値(kobu.rfid.stale.timeout)以内にそのIDが通知されていなければゼロ(0L)を返します。 タイムアウト値は秒数で指定しデフォルトは180秒つまり三分です。

この方法でIDが有効か無効かを調べているDemo #1をご覧ください。

 

#2 ConnectorListener

 

kobu.rfid.ConnectorListenerインターフェースを実装するクラスを作成して、ID ConnectorにIDが届いた瞬間に通知を受けることもできます。 そのIDでまもなくクライアントがあなたのアプリケーションに接続してくるので、その準備のためIDを退避しておけます。 リスナーは必要であれば短い文字列を返して、その文字列をID KickerのログウィンドウのそのIDの横に表示できます。 ログウィンドウに表示するものがない場合はnullを返してください。

  package kobu.rfid;
  public interface ConnectorListener
  {
    String cardSwiped(javax.servlet.ServletContext cnt, String id, long swipeTime);
      // Web application can do anything with the id and swipeTime passed through the listener.
      // If the listener returns a short string, it will be displayed on the log display of ID Kicker.
  }

リスナーを作成して、そのインスタンスをID Connectorに渡すには、ConnectorUtilの次のメソッドを使います。

  package kobu.rfid;
  public class ConnectorUtil
  {
    public static void addConnectorListener(ServletContext cnt, ConnectorListener listener)
    {
      ...

この方法でIDが有効か無効かを調べているDemo #2をご覧ください。Demo #2はデモアプリのユーザがタイプしたカードの名前をID Kickerに渡し、それがKickerウィンドウのカード履歴に表示されます。

 

ID ConnectorはID Kickerを使用するWebアプリケーションと同一のアプリケーションコンテキストに置かなければなりません。 つまり、単一のWebアプリケーションアーカイブ(.WAR)に格納しなくてはなりません。

 

Kicker.war内のファイル

 
  <tomcat-webapp>/kicker/index.htm (dummy)
  <tomcat-webapp>/kicker/connector-guide-en.htm (this file in English)
  <tomcat-webapp>/kicker/connector-guide-jp.htm (this file in Japanese)
  <tomcat-webapp>/kicker/demo2/index.jsp (demo #2 application)
  <tomcat-webapp>/kicker/demo3/index.jsp (demo #3 application, english version)
  <tomcat-webapp>/kicker/demo3jp/index.jsp (demo #3 application, japanese version)
  <tomcat-webapp>/kicker/WEB-INF/web.xml (application configuration)
  <tomcat-webapp>/kicker/WEB-INF/classes/demo/DemoServlet.java (demo #1 application)
  <tomcat-webapp>/kicker/WEB-INF/classes/demo/DemoServlet.class
  <tomcat-webapp>/kicker/WEB-INF/classes/demo3/BerkeleyDB.java (demo #3 support classes)
  <tomcat-webapp>/kicker/WEB-INF/classes/demo3/BerkeleyDB.class
  <tomcat-webapp>/kicker/WEB-INF/classes/demo3/BerkeleyDB$RecordBinding.class
  <tomcat-webapp>/kicker/WEB-INF/classes/demo3/Record.java
  <tomcat-webapp>/kicker/WEB-INF/classes/demo3/Record.class
  <tomcat-webapp>/kicker/WEB-INF/lib/connector.jar (ID Connector for ID Kicker)
 

Copyright (c) 2009 Kobu.Com. All rights reserved.
横浜工文社
http://www.kobu.com/rfid/

初版: 2009/01/05 (ID Kicker v0.9a)

ID Connector(connector.jar)は横浜工文社の製品で、ID Kickerと併用する場合のみ使用が許可されます。
付属のデモアプリケーションは、ID Kickerと連動するサーバサイドのWebアプリケーションを開発するために、自由にコピー・変更してかまいません。

横浜工文社はこれらソフトウェアが完全であることを保障することはできません。 あなたの責任においてこれらソフトウェアを使用してください。