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)

推薦閱讀