LockVerifyServer:是一个简单单机服务器,当你使用VerifyingLockFactory锁时必须运行该服务器。其主要是确保在一个时刻最多只有一个进程拥有该锁。
LockStressTest:是一个简单的获取和释放一个指定锁的单机服务器。
在这两个类里只有一个main入口方法,下面我们来讲讲如何使这两个服务器跑起来:
LockVerifyServer需要传入一个参数,进程端口号。可以在任务管理器中找到要监控的进程的PID号。
LockVerifyServer.java文件上右击——Debug As——Open Debug Dialog——
LockStressTest:
Usage: java org.apache.lucene.store.LockStressTest myID verifierHostOrIP verifierPort lockFactoryClassName lockDirName sleepTime
myID = int from 0 .. 255 (should be unique for test process)
verifierHostOrIP = host name or IP address where LockVerifyServer is running
verifierPort = port that LockVerifyServer is listening on
lockFactoryClassName = primary LockFactory class that we will use
lockDirName = path to the lock directory (only set for Simple/NativeFSLockFactory
sleepTimeMS = milliseconds to pause betweeen each lock obtain/release
You should run multiple instances of this process, each with its own
unique ID, and each pointing to the same lock directory, to verify
that locking is working correctly.
Make sure you are first running LockVerifyServer.
从上面一段提示文字可以知道,传入的6个参数分别为:
myID:标识ID,值为0到255之间的数字
verifierHostOrIP :LockVerifyServer服务器运行的主机名或IP地址
verifierPort :LockVerifyServer监控的进程端口号
lockFactoryClassName:LockFactory 实现类,如:org.apache.lucene.store.NativeFSLockFactory
lockDirName :锁目录路径,只有当使用SimpleFSLockFactory和NativeFSLockFactory两种锁时才需要设置,如:D:/DATAMANAGER/INDEX/SYS_3000 3000
sleepTimeMS :锁获取和释放的时间间隔(毫秒)
如:1 192.168.0.37 3752 org.apache.lucene.store.NativeFSLockFactory D:/DATAMANAGER/INDEX/SYS_3000 3000
你必须运行LockStressTest程序的多个实例,它们都拥有唯一的ID,并且都指向相同的锁目录,确保锁工作正常。
必须确保先运行LockVerifyServer程序,然后再运行LockStressTest程序。
LockStressTest.java文件上右击——Debug As——Open Debug Dialog——
只要修改第一个参数值为不同的值然后运行起来。这样可以创建LockStressTest程序的多个实例。
注意:sleepTimeMS 的时间间隔不能太短,避免出现在短时间内new的网络连接太多,出现java.net.BindException: Address already in use: JVM_Bind的异常。