Nov 25, 2003
onlsbc1, Debian GNU/Linux 3.0 のシステムでのJavaRMIの実行
--- リモートマシンからの例題ソフトの実行 #7
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(http://www-online.kek.jp/~inoue/para-CAMAC/
Work/CAMAC-JavaRMI7.html)
高エネルギー加速器研究機構
素粒子原子核研究所
物理、オンライングループ
井上 栄二
目的
リモートマシン onlnote2 から、CC/NET上のSBCである onlsbc1 を
ターゲットマシンとして、JavaRMIとJNIを使ったWebアプリケーションで
CAMAC read/write を実行する。 onlsbc1 上で動作している OSは
Debian GNU/Linux 3.0 である。(その2)
(1). 構成
(2). ソフトウェア
(3). 実行
--------------------------------------------------------------------
(1). 構成
テストに使用するマシンは onlnote2 と onlsbc1 である。 マシン onlnote2 は
Winodws XP が動作している。 Java のバージョンは Java1.4.1_02 である。
一方 onlsbc1 はCAMACコントローラ、CC/NET上に装着された SBC である。
この SBC は、アドバンテク社のPCM-9370である。 onlsbc1 の OS は、512MBの
コンパクトフラッシュ上に、compact-debian-Nov212003g.tar.gzファイルから
構築した Debian GNU/Linux3.0 (Woody) がインストールされている。 Javaは
SUN のJ2SDK、バージョンは 1.4.2_01-b06である。
(2). ソフトウェア
リモートから CC/NETにアクセスして CAMAC 実行を行うことができる Webアプリ
ケーション例題プログラム、Web3を実行する。
(2-1). サーバ側、onlsbc1.kek.jp
(2-1-1). Javaのチェック
toyo@onlsbc1:~$ java -version
java version "1.4.2_01"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_01-b06)
Java HotSpot(TM) Client VM (build 1.4.2_01-b06, mixed mode)
toyo@onlsbc1:~$
(2-1-2). 実行環境
toyo@onlsbc1:~$ env
PWD=/home/toyo
PS1=\u@\h:\w\$
USER=toyo
LS_COLORS=no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:c
d=40;33;01:or=40;31;01:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:
*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*
.rpm=01;31:*.jar=01;31:*.jpg=01;35:*.jpeg=01;35:*.png=01;35:*.gif=01;35:*.bmp=01
;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.ti
f=01;35:*.tiff=01;35:*.mpg=01;35:*.mpeg=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35
:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.ogg=01;35:*.mp3=01;35:
MAIL=/var/mail/toyo
SSH_CLIENT=130.87.153.116 32974 22
LOGNAME=toyo
SHLVL=1
SHELL=/bin/bash
HOME=/home/toyo
TERM=vt100
PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:/usr/java/bin
SSH_TTY=/dev/pts/1
_=/usr/bin/env
toyo@onlsbc1:~$
(2-1-3). ソフトウェア
CAMAC-JavaRMI5.htmlで使用したソフトをそのまま実行してみる。
toyo@onlsbc1:~/public_html/Web$ pwd
/home/toyo/public_html/Web
toyo@onlsbc1:~/public_html/Web$ ls -l
total 138
-rw-r--r-- 1 toyo toyo 206 Nov 19 09:26 Client.class
-rw-r--r-- 1 toyo toyo 234 Jul 30 14:50 Client.java
-rw-r--r-- 1 toyo toyo 3559 Nov 19 09:26 ClientImpl.class
-rw-r--r-- 1 toyo toyo 17458 Jul 30 14:50 ClientImpl.java-bak
-rw-r--r-- 1 toyo toyo 1735 Nov 19 09:26 ClientImpl_Skel.class
-rw-r--r-- 1 toyo toyo 3140 Nov 19 09:26 ClientImpl_Stub.class
-rw-r--r-- 1 toyo toyo 1604 Jul 30 14:50 Makefile
-rw-r--r-- 1 toyo toyo 244 Nov 19 09:26 Server.class
-rw-r--r-- 1 toyo toyo 298 Jul 30 14:50 Server.java
-rw-r--r-- 1 toyo toyo 2616 Nov 19 09:26 ServerImpl.class
-rw-r--r-- 1 toyo toyo 3394 Jul 30 14:50 ServerImpl.java
-rw-r--r-- 1 toyo toyo 1956 Nov 19 09:26 ServerImpl_Skel.class
-rw-r--r-- 1 toyo toyo 3510 Nov 19 09:26 ServerImpl_Stub.class
-rw-r--r-- 1 toyo toyo 2617 Jul 30 14:50 cam.c
-rw-r--r-- 1 toyo toyo 360 Nov 19 09:26 cam.class
-rw-r--r-- 1 toyo toyo 414 Nov 19 09:26 cam.h
-rw-r--r-- 1 toyo toyo 792 Jul 30 14:50 cam.java
lrwxrwxrwx 1 toyo toyo 19 Nov 19 15:47 camac.c -> ../../camac/c
amac.c
-rw-r--r-- 1 toyo toyo 13325 Jul 30 14:50 camac.c-bak
-rw-r--r-- 1 toyo toyo 9468 Nov 19 09:26 camac.o
-rwxr-xr-x 1 toyo toyo 16344 Nov 19 09:26 libMyImpOfcam.so
lrwxrwxrwx 1 toyo toyo 17 Nov 19 15:47 pcc.h -> ../../camac/pcc
.h
-rw-r--r-- 1 toyo toyo 6364 Jul 30 14:50 pcc.h-bak
-rw-r--r-- 1 toyo toyo 81 Jul 30 14:50 policy
-rwxr-xr-x 1 toyo toyo 123 Jul 30 14:50 web.sh
-rw-r--r-- 1 toyo toyo 186 Jul 30 14:50 web3-inoue.mem
-rw-r--r-- 1 toyo toyo 4212 Nov 19 09:26 web3.class
-rw-r--r-- 1 toyo toyo 2454 Jul 30 17:43 web3.html
-rw-r--r-- 1 toyo toyo 11931 Aug 1 17:59 web3.java
-rw-r--r-- 1 toyo toyo 11879 Aug 1 17:42 web3.java-org
toyo@onlsbc1:~/public_html/Web$
(2-1-4). CAMACライブラリおよびドライバのインストール
/home/toyoディレクトリの下にはすでにコンパイル済みのCAMACライブラリおよ
びドライバプログラムが置いてある。 さらに、CAMACドライバは、CC/NET起動
時にカーネルに組み込まれている。
toyo@onlsbc1:~/public_html/Web$ /sbin/lsmod
Module Size Used by Tainted: P
pcc 8160 0 (unused)
mousedev 3776 0 (unused)
hid 18816 0 (unused)
usb-storage 97152 1
usbmouse 1760 0 (unused)
eepro100 17264 1
keybdev 1664 0 (unused)
usbkbd 2848 0 (unused)
input 3072 0 [mousedev hid usbmouse keybdev usbkbd]
usb-uhci 20708 0 (unused)
usbcore 48032 1 [hid usb-storage usbmouse usbkbd usb-uhci]
toyo@onlsbc1:~/public_html/Web$
(2-1-5). 例題プログラムのコンパイルおよび web3プログラムの実行
/home/toyo/public_html/Webディレクトリの下にはすでにコンパイル済みの例題
プログラムが置いてある。
apache を起動する。
onlsbc1:~# /usr/sbin/apachectl start
[Tue Nov 25 16:30:14 2003] [alert] apache: Could not determine the server's full
y qualified domain name, using 130.87.153.3 for ServerName
/usr/sbin/apachectl start: httpd started
onlsbc1:~#
onlsbc1:~# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 13:54 ? 00:00:04 init
root 2 1 0 13:54 ? 00:00:00 [keventd]
root 3 0 0 13:54 ? 00:00:00 [ksoftirqd_CPU0]
root 4 0 0 13:54 ? 00:00:00 [kswapd]
root 5 0 0 13:54 ? 00:00:00 [bdflush]
root 6 0 0 13:54 ? 00:00:00 [kupdated]
root 7 1 0 13:54 ? 00:00:00 [i2oevtd]
root 8 1 0 13:54 ? 00:00:00 [kjournald]
root 43 1 0 13:54 ? 00:00:00 [khubd]
root 188 1 0 13:54 ? 00:00:00 [usb-storage-0]
root 189 1 0 13:54 ? 00:00:00 [scsi_eh_0]
daemon 250 1 0 13:55 ? 00:00:00 /sbin/portmap
root 304 1 0 13:55 ? 00:00:00 /sbin/syslogd
root 320 1 0 13:55 ? 00:00:00 /sbin/klogd
root 325 1 0 13:55 ? 00:00:00 /sbin/rpc.statd
root 330 1 0 13:55 ? 00:00:00 /usr/sbin/inetd
root 336 1 0 13:55 ? 00:00:00 /usr/sbin/lpd
root 345 1 0 13:55 ? 00:00:01 /usr/sbin/sshd
daemon 348 1 0 13:55 ? 00:00:00 /usr/sbin/atd
root 351 1 0 13:55 ? 00:00:00 /usr/sbin/cron
toyo 356 1 0 13:55 tty1 00:00:00 -bash
root 357 1 0 13:55 tty2 00:00:00 /sbin/getty 38400 tty2
root 358 1 0 13:55 tty3 00:00:00 /sbin/getty 38400 tty3
root 359 1 0 13:55 tty4 00:00:00 /sbin/getty 38400 tty4
root 360 1 0 13:55 tty5 00:00:00 /sbin/getty 38400 tty5
root 361 1 0 13:55 tty6 00:00:00 /sbin/getty 38400 tty6
root 364 345 0 14:08 ? 00:00:00 /usr/sbin/sshd
toyo 366 364 0 14:08 ? 00:00:00 /usr/sbin/sshd
toyo 367 366 0 14:08 pts/0 00:00:00 -bash
root 371 367 0 14:08 pts/0 00:00:00 bash
root 466 1 0 15:20 ? 00:00:00 [kjournald]
root 479 345 0 15:56 ? 00:00:00 /usr/sbin/sshd
toyo 481 479 0 15:56 ? 00:00:00 /usr/sbin/sshd
toyo 482 481 0 15:56 pts/1 00:00:00 -bash
root 504 482 0 16:29 pts/1 00:00:00 bash
root 507 1 0 16:30 ? 00:00:00 /usr/sbin/apache
www-data 508 507 0 16:30 ? 00:00:00 /usr/sbin/apache
www-data 509 507 0 16:30 ? 00:00:00 /usr/sbin/apache
www-data 510 507 0 16:30 ? 00:00:00 /usr/sbin/apache
www-data 511 507 0 16:30 ? 00:00:00 /usr/sbin/apache
www-data 512 507 0 16:30 ? 00:00:00 /usr/sbin/apache
root 513 504 0 16:30 pts/1 00:00:00 ps -ef
onlsbc1:~#
CC/NET起動時に、CAMAC-PCI インターフェース部はすでに利用可能な状態に
セットされている。 従って、この時点では "./w e840 1" の操作は必要ない。
toyo@onlsbc1:~/public_html/Web$ pwd
/home/toyo/public_html/Web
toyo@onlsbc1:~/public_html/Web$ ls
Client.class Server.java cam.java web.sh
Client.java ServerImpl.class camac.c web3-inoue.mem
ClientImpl.class ServerImpl.java camac.c-bak web3.class
ClientImpl.java-bak ServerImpl_Skel.class camac.o web3.html
ClientImpl_Skel.class ServerImpl_Stub.class libMyImpOfcam.so web3.java
ClientImpl_Stub.class cam.c pcc.h web3.java-org
Makefile cam.class pcc.h-bak
Server.class cam.h policy
toyo@onlsbc1:~/public_html/Web$
<<< サーバ側 >>>
toyo@onlsbc1:~/public_html/Web$ ./web.sh
Wait. In Process .............
bind done
MI: Server side:
JNI, Java side: Received CAMAC command: array length = 1
cmd[0] = 0xe0030010, dat[0] = 0xffffff
cmd[1] = 0x0, dat[1] = 0x0
JNI, Java side: before Native Call
ServerImpl.r_cmd[0] = 0xe0030010, ServerImpl.r_dat[0] = 0xffffff
ServerImpl.r_cmd[1] = 0x0, ServerImpl.r_dat[1] = 0x0
JNI, C side: Received CAMAC command: array length = 1
example number = 14
c_cmd[0] = 0xe0030010, c_dat[0] = 0xffffff
c_cmd[1] = 0x0, c_dat[1] = 0x0
JNI, Java side: after Native Call array length = 1
ServerImpl.r_cmd[0] = 0xe0030010, ServerImpl.r_dat[0] = 0x7000000
ServerImpl.r_cmd[1] = 0x0, ServerImpl.r_dat[1] = 0x0
RMI: Server side:
JNI, Java side: Received CAMAC command: array length = 1
cmd[0] = 0xe0030000, dat[0] = 0x7000000
cmd[1] = 0x0, dat[1] = 0x0
JNI, Java side: before Native Call
ServerImpl.r_cmd[0] = 0xe0030000, ServerImpl.r_dat[0] = 0x7000000
ServerImpl.r_cmd[1] = 0x0, ServerImpl.r_dat[1] = 0x0
Q = 1 : X = 1 : data = 0
JNI, C side: Received CAMAC command: array length = 1
example number = 14
c_cmd[0] = 0xe0030000, c_dat[0] = 0x7000000
c_cmd[1] = 0x0, c_dat[1] = 0x0
JNI, Java side: after Native Call array length = 1
ServerImpl.r_cmd[0] = 0xe0030000, ServerImpl.r_dat[0] = 0x7ffffff
ServerImpl.r_cmd[1] = 0x0, ServerImpl.r_dat[1] = 0x0
ctl-C で web.sh を停止する。
toyo@onlsbc1:~/public_html/Web$ Q = 1 : X = 1 : data = ffffff
toyo@onlsbc1:~/public_html/Web$
rmiregistry を停止する。
toyo@onlsbc1:~/public_html/Web$ ps -ef | grep rmiregistry
toyo 518 1 0 16:35 pts/1 00:00:01 rmiregistry
toyo 521 518 0 16:35 pts/1 00:00:00 rmiregistry
toyo 522 521 0 16:35 pts/1 00:00:01 rmiregistry
toyo 524 521 0 16:35 pts/1 00:00:00 rmiregistry
toyo 525 521 0 16:35 pts/1 00:00:00 rmiregistry
toyo 529 521 0 16:35 pts/1 00:00:00 rmiregistry
toyo 530 521 0 16:35 pts/1 00:00:00 rmiregistry
toyo 531 521 0 16:35 pts/1 00:00:02 rmiregistry
toyo 532 521 0 16:35 pts/1 00:00:00 rmiregistry
toyo 538 521 0 16:35 pts/1 00:00:00 rmiregistry
toyo 539 521 0 16:35 pts/1 00:00:00 rmiregistry
toyo 545 521 0 16:35 pts/1 00:00:00 rmiregistry
toyo 546 521 0 16:35 pts/1 00:00:00 rmiregistry
toyo 577 482 0 16:44 pts/1 00:00:00 grep rmiregistry
toyo@onlsbc1:~/public_html/Web$ kill -KILL 518
toyo@onlsbc1:~/public_html/Web$ ps -ef | grep rmiregistry
toyo 579 482 0 16:45 pts/1 00:00:00 grep rmiregistry
toyo@onlsbc1:~/public_html/Web$
apache を停止する。
onlsbc1:/home/toyo/public_html/Web# ps -ef | grep apache
root 507 1 0 16:30 ? 00:00:00 /usr/sbin/apache
www-data 508 507 0 16:30 ? 00:00:00 /usr/sbin/apache
www-data 509 507 0 16:30 ? 00:00:00 /usr/sbin/apache
www-data 510 507 0 16:30 ? 00:00:00 /usr/sbin/apache
www-data 511 507 0 16:30 ? 00:00:00 /usr/sbin/apache
www-data 512 507 0 16:30 ? 00:00:00 /usr/sbin/apache
www-data 551 507 0 16:37 ? 00:00:00 /usr/sbin/apache
www-data 552 507 0 16:37 ? 00:00:00 /usr/sbin/apache
www-data 553 507 0 16:37 ? 00:00:00 /usr/sbin/apache
www-data 554 507 0 16:37 ? 00:00:00 /usr/sbin/apache
www-data 557 507 0 16:37 ? 00:00:00 /usr/sbin/apache
root 585 581 0 16:53 pts/1 00:00:00 grep apache
onlsbc1:/home/toyo/public_html/Web#
onlsbc1:/home/toyo/public_html/Web# /usr/sbin/apachectl stop
/usr/sbin/apachectl stop: httpd stopped
onlsbc1:/home/toyo/public_html/Web# ps -ef | grep apache
root 589 581 0 16:53 pts/1 00:00:00 grep apache
onlsbc1:/home/toyo/public_html/Web#
<<< クライアント側 >>>
サーバ側のソフトを起動しておいてから、リモートマシン、onlnote2 からWeb
ブラウザでアクセスする。
web3例題プログラムが起動すると以下の画面が表示される。
CAMAC コマンド、N=3、A=0、F=16、 Data=0xFFFFFF をセットして GOボタンを
押すと以下の画面が表示される。
注. CC/NET、onlsbc1 が装着してある CAMACクレートのステーションナンバ
3の位置には、テスト用の CAMACスイッチ・レジスタ・モジュールが
装着してある。
CAMAC コマンド、N=3、A=0、F=0 をセットして GOボタンを押すと以下の画面が
表示される。
ok. web3例題プログラムは正常に実行できた。
---xxxx