サーバモジュールのインストール方法

なおJava2(1.4)とMySQLはすでに正しく設定されているものとして進めてまいります。Java2(1.4)とMySQLの詳しい使い方はそれぞれのソフトウェアのサイト等でご確認ください。
MySQLはトランザクションを設定しなければなりません。転送パケットも10MB以上に設定しなければなりません。

特定のディレクトリにserver.jarをコピーしてください。
JDBCドライバをJavaライブラリのextディレクトリにコピーする等、JVMから見える状況にしてください。
推奨JDBCドライバはgweMysqlDriverです。少なくともmm.mysql.Driverは正しく動作しません。
gweMysqlDriverは以下のサイトでダウンロードできます。
DBC Driver for MySQL
このドライバは高橋智宏氏により作成されました。

まずKintokiサーバとMySQLの接続のためにMySQL上にKintoki用のテーブルを作成しなければなりません。テーブルを作成する場所はトランザクションをサポートしたInnoDB上出なければなりません。
以下のテーブルを用意します。右側列は添付のcreate2.sqlファイル内でのテーブル名です。

ナンバーテーブル NUMBER_TB
カタログテーブル CATALOG_TB
プロパティマスタテーブル PROPERTY_MS_TB
プロパティ詳細テーブル PROPERTY_DT_TB
プロパティテーブル PROPERTY_TB
ユーザテーブル USER_TB
ファイルテーブル FILE_TB
ファイル内容テーブル FILE_CONT_TB
キーワードテーブル KEYWORD_TB

テーブル名は任意の物がつけられます。テーブル内のフィールド名はKintokiに指定されたものとなります。各テーブルの構成は以下の通りです。添付のcreate2.sqlより。

-- NUMBER TABLE
create table NUMBER_TB(
cat_id_hi bigint not null, -- CatalogID HI.
cat_id_lo bigint not null, -- CatalogID LO.
ope_id_hi bigint not null, -- OperationID HI.
ope_id_lo bigint not null, -- OperationID LO.
prop_ms_id bigint not null, -- Property Master ID.
prop_seq_id bigint not null -- Property Sequence ID.
) type=InnoDB;

-- CATALOG TABLE
create table CATALOG_TB(
cat_id_hi bigint not null, -- * CatalogID HI.
cat_id_lo bigint not null, -- * CatalogID LO.
hash_0 int not null, -- Hash code 0.
hash_1 int not null, -- Hash code 1.
ver_maj smallint not null, -- Major version.
ver_min smallint not null, -- Minor version.
usr_id_hi bigint not null, -- UserID HI.
usr_id_lo bigint not null, -- UserID LO.
cat_par_id_hi bigint not null, -- Parent CatalogID HI.
cat_par_id_lo bigint not null, -- Parent CatalogID LO.
ope_id_hi bigint not null, -- OperationID HI.
ope_id_lo bigint not null, -- OperationID LO.
file_ver bigint not null, -- Latest file version.
cat_old_id_hi bigint not null, -- Old CatalogID HI.
cat_old_id_lo bigint not null, -- Old CatalogID LO.
cat_new_id_hi bigint not null, -- New CatalogID HI.
cat_new_id_lo bigint not null, -- New CatalogID LO.
primary key(cat_id_hi, cat_id_lo)
) type=InnoDB;

-- PROPERTY MASTER TABLE
create table PROPERTY_MS_TB(
prop_ms_id bigint not null, -- * Property Master ID.
prop_ms_type int not null, -- * Type of Property.
prop_par_id bigint not null, -- Parent Property Master ID.
prop_name varchar(255) not null, -- Property name.
prop_seq_id bigint not null, -- Property Sequence ID.
primary key(prop_ms_id)
) type=InnoDB;

-- PROPERTY DETAIL TABLE
-- For enum types.
create table PROPERTY_DT_TB(
prop_ms_id bigint not null, -- * Property Master ID.
prop_dt_id int not null, -- * Property detail ID.
prop_dt_val_len int not null, -- prop_dt_valの長さ
prop_char_set int not null, -- prop_dt_val character set. fortunately, us-ascii was 0.
prop_dt_val blob, -- Value.
prop_seq_id bigint not null, -- Property Sequence ID.
primary key(prop_ms_id, prop_dt_id)
) type=InnoDB;

-- PROPERTY TABLE
create table PROPERTY_TB(
cat_id_hi bigint not null, -- * CatalogID HI.
cat_id_lo bigint not null, -- * CatalogID LO.
prop_ms_id bigint not null, -- * Property Master ID.
prop_lc_id bigint not null, -- * Property Local ID.
ope_id_hi bigint not null, -- OperationID HI.
ope_id_lo bigint not null, -- OperationID LO.
ope_fs_id_hi bigint not null, -- First appeared OperationID HI.
ope_fs_id_lo bigint not null, -- First appeared OperationID LO.
prop_cont_len int not null, -- Length of prop_cont.
prop_cont blob, -- Property contents or prop_dt_id of PROPERTY_DT_TB.
primary key(cat_id_hi, cat_id_lo, prop_ms_id, prop_lc_id)
) type=InnoDB;

-- USER TABLE
create table USER_TB(
usr_id_hi bigint not null, -- * UserID HI.
usr_id_lo bigint not null, -- * UserID LO.
user_name varchar(16), -- User name
ever int not null, -- Ever connected to server.
primary key(usr_id_hi, usr_id_lo)
) type=InnoDB;

-- FILE TABLE
create table FILE_TB(
cat_id_hi bigint not null, -- * CatalogID HI.
cat_id_lo bigint not null, -- * CatalogID LO.
file_ver bigint not null, -- * File Version.
ope_id_hi bigint not null, -- OperationID HI.
ope_id_lo bigint not null, -- OperationID LO.
ope_fs_id_hi bigint not null, -- First appeared OperationID HI.
ope_fs_id_lo bigint not null, -- First appeared OperationID LO.
file_dir int not null, -- 0 Not directory, !0 directory.
file_del int not null, -- 0 Not deleted, !0 deleted.
file_platform int not null, -- Platform.
alias_ver int, -- reffers file_ver.
crt_time_hi int, -- create time high.
crt_time_lo int, -- create time low.
wrt_time_hi int, -- create time high.
wrt_time_lo int, -- create time low.
file_size int not null, -- File size.
total_packet int not null, -- Total packet count.
primary key(cat_id_hi, cat_id_lo, file_ver)
) type=InnoDB;

-- FILE CONTAIN TABLE
create table FILE_CONT_TB(
cat_id_hi bigint not null, -- * CatalogID HI.
cat_id_lo bigint not null, -- * CatalogID LO.
file_ver bigint not null, -- * File Version.
seq_no int not null, -- sequence number.
this_size int not null, -- File size.
file_cont mediumblob, -- Contents of file.
primary key(cat_id_hi, cat_id_lo, file_ver, seq_no)
) type=InnoDB;

-- KEYWORD TABLE
create table KEYWORD_TB(
search_word varchar(255) not null, -- search string.
cat_id_hi bigint not null, -- * CatalogID HI.
cat_id_lo bigint not null, -- * CatalogID LO.
prop_lc_id bigint not null, -- * Property Local ID.
primary key(search_word, cat_id_hi, cat_id_lo, prop_lc_id)
) type=InnoDB;

続いてナンバーテーブルにレコードを1行作成します。このテーブルには1レコードしか存在しません。
このレコードはカタログID等の決定に用いられます。

begin;
insert into NUMBER_TB values (0x8000000000000000, 0x8000000000000001, 0x8000000000000000, 0x8000000000000001, 0, 1);
commit;

これでデータベーステーブルの作成は完了です。

続いてKintoki.confというファイルをserver.jarと同じディレクトリに作成します。
記入例は以下のとおりです。#以降は行末までコメントとみなします。
テーブル名を自由に名づけられるのはこのファイルがあるからです。

# サーバのポート番号。デフォルトは10000
port = 10000
#JDBCドライバのクラス名。
driverclass = gwe.sql.gweMysqlDriver
# データベースのURL。Windows版MySQLは大文字小文字の識別が一定しないので注意。
databaseurl = jdbc:mysql://kintoki1/kintoki
# ファイル内容がHEXに変化される場合はtrue。
conttohex = true
# ヘッダーがある場合はそのバイト数。
skiphead = 2
# MySQLデータベース名
mysql_database = kintoki
# ナンバーテーブル名
number_table = NUMBER_TB
# カタログテーブル名
catalog_table = CATALOG_TB
# プロパティマスタテーブル名
property_ms_table = PROPERTY_MS_TB
# プロパティ詳細テーブル名
property_dt_table = PROPERTY_DT_TB
# プロパティテーブル名
property_table = PROPERTY_TB
# ユーザテーブル名
user_table = USER_TB
# ファイルテーブル名
file_table = FILE_TB
# ファイル内容テーブル名
file_cont_table = FILE_CONT_TB
# キーワードテーブル名
keyword_table = KEYWORD_TB

Linuxの場合databaseurlにマシン名を記述しなければならない場合があります。
その場合の記述は以下のようになります。
databaseurl = jdbc:mysql://マシン名/kintoki

サーバを起動する前に"kintoki"という名前のユーザを作成しなければなりません。
作成は以下のコマンドで行います。server.jarがコピーされたディレクトリがカレントディレクトリと仮定しています。他のディレクトリからの場合は-classpath以下の部分を書き換えて実行してください。BATファイルやshellスクリプトを作成すると便利です。

> java -classpath server.jar jp.co.comona.kintoki.server.admin.AddKintokiUser

起動するとまずデータベースのアドミニストレータの名前を訊いて来ます。MySQLの場合は"root"です。
続いてアドミニストレータのパスワードが訊かれます。これは入力がエコーされませんのでご注意ください。
そして最後に"kintoki"ユーザのパスワードが訊かれます。これも入力はエコーされません。

続いてコモナより渡されたライセンスファイル"users.lic"をserver.jarと同じディレクトリにコピーします。

以上でサーバのインストールが終了しますので、サーバを実行できるようになります。
以下のコマンドで動作を開始します。

> java -jar server.jar

サーバの動作を終了させるときは以下のコマンドです。

> java -classpath server.jar jp.co.comona.kintoki.server.StopServer


Copyright Comona Co., Ltd.