JAVA 与 MyCat(1) System.getProperty()

9 篇文章 0 订阅

通过mycat来学习java了^^。


mycat的启动这样的:./mycat start

执行这个命令后,我们看一下mycat的命令:

$ ps -ef | grep mycat

mycat    21348     1  0 Nov28 ?        00:03:25 /home/mycat/mycat/bin/./wrapper-linux-x86-64 /home/mycat/mycat/conf/wrapper.conf wrapper.syslog.ident=mycat wrapper.pidfile=/home/mycat/mycat/logs/mycat.pid wrapper.daemonize=TRUE
mycat    21350 21348  0 Nov28 ?        00:25:37 java -DMYCAT_HOME=. -server -XX:MaxPermSize=64M -XX:+AggressiveOpts -XX:MaxDirectMemorySize=2G -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1984 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Xmx4G -Xms1G -Djava.library.path=lib -classpath lib/wrapper.jar:conf:lib/zookeeper-3.4.6.jar:lib/jline-0.9.94.jar:lib/ehcache-core-2.6.11.jar:lib/log4j-1.2.17.jar:lib/fastjson-1.2.12.jar:lib/curator-client-2.11.0.jar:lib/joda-time-2.9.3.jar:lib/log4j-slf4j-impl-2.5.jar:lib/libwrapper-linux-x86-32.so:lib/netty-3.7.0.Final.jar:lib/druid-1.0.26.jar:lib/log4j-api-2.5.jar:lib/mapdb-1.0.7.jar:lib/slf4j-api-1.6.1.jar:lib/univocity-parsers-2.2.1.jar:lib/hamcrest-core-1.3.jar:lib/objenesis-1.2.jar:lib/leveldb-api-0.7.jar:lib/hamcrest-library-1.3.jar:lib/wrapper.jar:lib/commons-lang-2.6.jar:lib/reflectasm-1.03.jar:lib/mongo-java-driver-2.11.4.jar:lib/guava-19.0.jar:lib/curator-recipes-2.11.0.jar:lib/curator-framework-2.11.0.jar:lib/libwrapper-linux-ppc-64.so:lib/log4j-core-2.5.jar:lib/leveldb-0.7.jar:lib/sequoiadb-driver-1.12.jar:lib/mysql-binlog-connector-java-0.4.1.jar:lib/kryo-2.10.jar:lib/jsr305-2.0.3.jar:lib/commons-collections-3.2.1.jar:lib/disruptor-3.3.4.jar:lib/log4j-1.2-api-2.5.jar:lib/velocity-1.7.jar:lib/libwrapper-linux-x86-64.so:lib/dom4j-1.6.1.jar:lib/minlog-1.2.jar:lib/asm-4.0.jar:lib/Mycat-server-1.6-RELEASE.jar -Dwrapper.key=7bAB7DOGhhiX_myT -Dwrapper.port=32000 -Dwrapper.jvm.port.min=31000 -Dwrapper.jvm.port.max=31999 -Dwrapper.pid=21348 -Dwrapper.version=3.2.3 -Dwrapper.native_library=wrapper -Dwrapper.service=TRUE -Dwrapper.cpu.timeout=10 -Dwrapper.jvmid=1 org.tanukisoftware.wrapper.WrapperSimpleAppio.mycat.MycatStartup start

由此可知io.mycat.MycatStartup就是mycat的启动类,就从这个类开始,来了解mycat,并学习里面的java知识。

先看一下MycatStartup类的代码:

public final class MycatStartup {
	private static final String dateFormat = "yyyy-MM-dd HH:mm:ss";
	private static final Logger LOGGER = LoggerFactory.getLogger(MycatStartup.class);

	public static void main(String[] args) {
		// use zk ?
		// 是否启用zk配置,/myid.properties中的loadZk属性决定,默认不启用,从本地xml文件中读取配置
		ZkConfig.getInstance().initZk();
		try {
			String home = SystemConfig.getHomePath();
			if (home == null) {
				System.out.println(SystemConfig.SYS_HOME + "  is not set.");
				System.exit(-1);
			}
			// init
			// 获取MyCat实例,其实就是读取配置文件,并验证正确性等
			MycatServer server = MycatServer.getInstance();
			// 获取环境变量,日志配置
			server.beforeStart();

			// startup
			// 启动MyCat,启动线程,初始化线程池和连接池等
			server.startup();
			System.out.println("MyCAT Server startup successfully. see logs in logs/mycat.log");

		} catch (Exception e) {
			SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
			LOGGER.error(sdf.format(new Date()) + " startup error", e);
			System.exit(-1);
		}
	}
}


这个类很简单,只有一个main函数,挑重点一行行看看。

ZkConfig.getInstance().initZk();

这一行是zookeeper的初始化,mycat没有zookeeper照样可以运行,为了简单,不偏离主题,略过这一行。


String home = SystemConfig.getHomePath();

Ctrl+左点击getHomePath()方法,阅读源码,发现就是为读取“MYCAT_HOME”这个环境变量的,这个变量是在./conf/wrapper.conf里配置,默认是-DMYCAT_HOME=.。这个变量就是指定bin、conf、logs、lib、catlet所在的目录。

这里的java知识点在于System类的getProperty()和setProperty()方法的使用:

System类里有许多环境变量,可以通过System.getProperties()来获取,例如:

java.version

Java 运行时环境版本

java.vendor

Java 运行时环境供应商

java.vendor.url

Java 供应商的 URL

java.home

Java 安装目录

java.vm.specification.version

Java 虚拟机规范版本

java.vm.specification.vendor

Java 虚拟机规范供应商

java.vm.specification.name

Java 虚拟机规范名称

java.vm.version

Java 虚拟机实现版本

java.vm.vendor

Java 虚拟机实现供应商

java.vm.name

Java 虚拟机实现名称

java.specification.version

Java 运行时环境规范版本

java.specification.vendor

Java 运行时环境规范供应商

java.specification.name

Java 运行时环境规范名称

java.class.version

Java 类格式版本号

java.class.path

Java 类路径

java.library.path

加载库时搜索的路径列表

java.io.tmpdir

默认的临时文件路径

java.compiler

要使用的 JIT 编译器的名称

java.ext.dirs

一个或多个扩展目录的路径

os.name

操作系统的名称

os.arch

操作系统的架构

os.version

操作系统的版本

file.separator

文件分隔符(在 UNIX 系统中是“/”)

path.separator

路径分隔符(在 UNIX 系统中是“:”)

line.separator

行分隔符(在 UNIX 系统中是“/n”)

user.name

用户的账户名称

user.home

用户的主目录

user.dir

用户的当前工作目录


这些变量值可以通过System.getProperty()这样的命令来获取,例如:

>System.out.println(System.getProperty("java.vendor"));

Oracle Corporation

也可以通过System.setProperty()来设置自定义变量,例如:

System.setProperty("MYCAT_HOME", "/home/mycat");

也可以在运行java程序时,通过-D来指定变量,例如:

$java -DMYCAT_HOME=. io.mycat.MycatStartup









  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值