springboot H2 linux下搭建使用

这次研究是H2数据库了,关键还是再Linux下进行搭建部署的,被这个数据库快弄死了弄了4天时间,现在大致可以用了,还有些细节需要修正 。
我这边使用的是springboot集成模式 。直接使用代码启停方式的就和我的描述就不一样了 。
H2数据库有3钟模式mem,file,remote 3种模式 。
内存就不说了 , 这个就是临时的,我觉得用内存还不如jvm内存呢 。没啥意思 。当然也是由于我没有细究的缘故 。
file模式是本地模式 。本地创建相应的数据库文件,然后进行调用 。这里会存在个问题就是本地用了file之后,我其他电脑想访问这个数据库就是没法打开 。报错是数据库被占用 。这个是真心难受 。
那么使用remote模式这边会存在直接springboot启动起不来 。
那么这会就需要借用H2数据库官网上的启动方式了 。网址:http://www.h2database.com/
这里将最新版的程序下载下来 。version 2.1.214这个版本,在本地解压后bin目录下有个h2w.bat 文件,windows下直接启动就好了 。Linux下就需要使用指令去启动了 。
相关指令如下:
java -cp h2-2.1.214.jar org.h2.tools.Server -web -webAllowOthers -tcp -tcpAllowOthers -ifNotExists
这里我详细说几个参数webAllowOthers , web管理界面是否在其他IP中可以访问,tcpAllowOthers  , 其他电脑是否可以通过remote模式访问该系统的H2数据库,ifNotExists数据库不存在时是否允许创建,一般linux启动的时候这个是不开启的 , 不然你的linux系统中会充斥着一堆杂七杂八的数据库 。通过linux系统自启 。
如果你想修改默认的tcp端口,那也是可以的需要将这个入参带上    -tcpPort 19200
如果大家好奇有哪些入参可以带入,我在这边就稍微截点源码出来:
1 public void init(String... args) { 2// set the serverPropertiesDir, because it's used in loadProperties() 3for (int i = 0; args != null && i < args.length; i++) { 4if ("-properties".equals(args[i])) { 5serverPropertiesDir = args[++i]; 6} 7} 8Properties prop = loadProperties(); 9port = SortedProperties.getIntProperty(prop,10"webPort", Constants.DEFAULT_HTTP_PORT);11ssl = SortedProperties.getBooleanProperty(prop,12"webSSL", false);13allowOthers = SortedProperties.getBooleanProperty(prop,14"webAllowOthers", false);15setExternalNames(SortedProperties.getStringProperty(prop, "webExternalNames", null));16setAdminPassword(SortedProperties.getStringProperty(prop, "webAdminPassword", null));17commandHistoryString = prop.getProperty(COMMAND_HISTORY);18for (int i = 0; args != null && i < args.length; i++) {19String a = args[i];20if (Tool.isOption(a, "-webPort")) {21port = Integer.decode(args[++i]);22} else if (Tool.isOption(a, "-webSSL")) {23ssl = true;24} else if (Tool.isOption(a, "-webAllowOthers")) {25allowOthers = true;26}else if (Tool.isOption(a, "-webExternalNames")) {27setExternalNames(args[++i]);28} else if (Tool.isOption(a, "-webDaemon")) {29isDaemon = true;30} else if (Tool.isOption(a, "-baseDir")) {31String baseDir = args[++i];32SysProperties.setBaseDir(baseDir);33} else if (Tool.isOption(a, "-ifExists")) {34ifExists = true;35} else if (Tool.isOption(a, "-ifNotExists")) {36ifExists = false;37} else if (Tool.isOption(a, "-webAdminPassword")) {38setAdminPassword(args[++i]);39} else if (Tool.isOption(a, "-properties")) {40// already set41i++;42} else if (Tool.isOption(a, "-trace")) {43trace = true;44}45}46 //if (driverList != null) {47 //try {48 //String[] drivers =49 //StringUtils.arraySplit(driverList, ',', false);50 //URL[] urls = new URL[drivers.length];51 //for(int i=0; i<drivers.length; i++) {52 //urls[i] = new URL(drivers[i]);53 //}54 //urlClassLoader = URLClassLoader.newInstance(urls);55 //} catch (MalformedURLException e) {56 //TraceSystem.traceThrowable(e);57 //}58 //}59for (String[] lang : LANGUAGES) {60languages.add(lang[0]);61}62if (allowOthers) {63key = null;64}65updateURL();66} 1 public void init(String... args) { 2port = Constants.DEFAULT_TCP_PORT; 3for (int i = 0; args != null && i < args.length; i++) { 4String a = args[i]; 5if (Tool.isOption(a, "-trace")) { 6trace = true; 7} else if (Tool.isOption(a, "-tcpSSL")) { 8ssl = true; 9} else if (Tool.isOption(a, "-tcpPort")) {10port = Integer.decode(args[++i]);11portIsSet = true;12} else if (Tool.isOption(a, "-tcpPassword")) {13managementPassword = args[++i];14} else if (Tool.isOption(a, "-baseDir")) {15baseDir = args[++i];16} else if (Tool.isOption(a, "-key")) {17key = args[++i];18keyDatabase = args[++i];19} else if (Tool.isOption(a, "-tcpAllowOthers")) {20allowOthers = true;21} else if (Tool.isOption(a, "-tcpDaemon")) {22isDaemon = true;23} else if (Tool.isOption(a, "-ifExists")) {24ifExists = true;25} else if (Tool.isOption(a, "-ifNotExists")) {26ifExists = false;27}28}29}TCP server running at tcp://192.168.1.126:9092 (others can connect)Web Console server running at http://192.168.1.126:8082 (others can connect)

推荐阅读