./access start
启动中的,该命令将转换成:
"/root/dsnet-accesser/bin/wrapper" "/root/dsnet-accesser/conf/wrapper-accesser.conf" wrapper.syslog.ident=accesser wrapper.pidfile="/root/dsnet-accesser/accesser.pid" wrapper.daemonize=TRUE wrapper.lockfile="/var/lock/subsys/accesser"
其中/root/dsnet-accesser/bin/wrapper 并不是文本编辑成的shell文件
NND,好像又是一个工具,称为“Java Service Wrapper ”。
这个包的功能大概是能够帮助在unix、windows下生成服务。
cleversafe怎么就这么稀饭玩第三方的包呢,郁闷呀。
http://wrapper.tanukisoftware.org/doc/english/download.jsp
http://www.blogjava.net/TiGERTiAN/archive/2010/01/19/310037.html 中文介绍
从转换后命令的第个参数可以看wrapper的配置文件:
/root/dsnet-accesser/conf/wrapper-accesser.conf
全文如下:
可以看出命令与java的接口处在:
wrapper.java.mainclass=org.cleversafe.daemon.DaemonApp
该类的全文:
public class DaemonApp extends WrapperSimpleApp
{
protected DaemonApp( String[] args )
{
super( args );
}
}
NND,又奇怪了,这个是什么鸟东东? 什么代码都没写?只是把 WrapperSimpleApp实例化了一下。
不过有一个这个东西:
wrapper.app.parameter.1=org.cleversafe.layer.access.GridAccessDaemon
对应的是:
该函数中的main(args[])
有用new来实例化GridAccessDaemon:
public GridAccessDaemon(String args[]) throws ExitStatusException
**当./access start调用时,args是空的。
接着用:
JSAPCommandLineParser parser =
new JSAPCommandLineParser(GridAccessDaemon.class, "grid_access_daemon.jsap",
COMMAND_NAME + " [OPTION]...", "Starts access device");
result = parser.parse(args);
得到一些参数:
**其中 private static final String COMMAND_NAME = "dsnet-accesser";
this.jmxHost = result.getString(JMX_AGENT_HOST_OPTION);
this.jmxPort = result.getInt(JMX_AGENT_PORT_OPTION);
URI dir = URI.create(result.getString(DIRECTORY_URL_OPTION));
后用run()来开一个线程
然后,线程又是一堆的事情: