javascript
spring hsqldb_在Spring中嵌入HSQLDB服务器实例
spring hsqldb
我一直在愉快地使用XAMPP進(jìn)行開發(fā),直到不得不將其托管在可通過Internet訪問的某個(gè)地方,供客戶端進(jìn)行測試和使用。 我有一個(gè)僅具有384 RAM的VPS,并且需要快速找到方法,因此決定將XAMPP安裝到VPS中。 由于內(nèi)存較低,因此當(dāng)MySQL運(yùn)行時(shí),即使初始Java堆大小設(shè)置為64m,Tomcat也無法啟動。 在移至OpenShift之前,我設(shè)法將網(wǎng)站臨時(shí)托管在Jelastic中。
我玩弄了將數(shù)據(jù)庫和應(yīng)用程序服務(wù)器實(shí)例合并在1個(gè)JVM中的想法,以減少RAM使用(與運(yùn)行MySQL + Tomcat相比)。 搜索Internet之后,我發(fā)現(xiàn)了與Tomcat一起運(yùn)行HSQL服務(wù)器實(shí)例的幾篇文章。 毫無疑問,我必須先更新站點(diǎn)以使其與HSQL兼容,但是作為POC(概念驗(yàn)證)嘗試,我決定探索在Spring容器中運(yùn)行HSQL服務(wù)器實(shí)例的可行性。
像在Spring中的bean一樣運(yùn)行HSQL服務(wù)器有幾個(gè)原因:
1.多合一配置。 所需配置的一切都在Spring中完成。 Net中有一些示例可以與Tomcat一起運(yùn)行HSQL實(shí)例,但這需要向Tomcat中添加內(nèi)容(請參見下面的鏈接)。
2.應(yīng)用程序服務(wù)器獨(dú)立性。 “理論上”(用引號表示,因?yàn)槲覂H在Tomcat中成功對其進(jìn)行了測試),由于一切都在Spring中完成,因此無需在appserver中進(jìn)行任何配置。
HSQL服務(wù)器“ bean”還旨在以網(wǎng)絡(luò)模式(不是進(jìn)程內(nèi)(例如,mem或文件))啟動實(shí)例。 原因如下:
1.“ mem”進(jìn)程內(nèi)訪問是最快的,但不是持久的。 還有其他一些方法可以使用Spring的spring-jdbc標(biāo)簽來啟動“ mem”數(shù)據(jù)源,這是一種更好的方法。
2.“文件”進(jìn)程內(nèi)訪問是持久性的,但與“內(nèi)存”一樣,它只能在Java進(jìn)程內(nèi)訪問。
3.網(wǎng)絡(luò)模式(hsql)是持久性的,并且可以使用外部JDBC客戶端工具訪問。 這對于故障排除和驗(yàn)證很有用。
閱讀HSQLDB的文檔后,下面是執(zhí)行HSQL服務(wù)器實(shí)例bean生命周期管理的代碼:
package org.gizmo.hsql.spring;import java.io.IOException; import java.util.Properties;import org.hsqldb.Server; import org.hsqldb.persist.HsqlProperties; import org.hsqldb.server.ServerAcl.AclFormatException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.SmartLifecycle;public class HyperSqlDbServer implements SmartLifecycle {private final Logger logger = LoggerFactory.getLogger(HyperSqlDbServer.class);private HsqlProperties properties;private Server server;private boolean running = false;public HyperSqlDbServer(Properties props){properties = new HsqlProperties(props);}@Overridepublic boolean isRunning(){if(server != null)server.checkRunning(running);return running;}@Overridepublic void start(){if(server == null){logger.info('Starting HSQL server...');server = new Server();try{server.setProperties(properties);server.start();running = true;}catch(AclFormatException afe){logger.error('Error starting HSQL server.', afe);}catch (IOException e){logger.error('Error starting HSQL server.', e);}}}@Overridepublic void stop(){logger.info('Stopping HSQL server...');if(server != null){server.stop();running = false;}}@Overridepublic int getPhase(){return 0;}@Overridepublic boolean isAutoStartup(){return true;}@Overridepublic void stop(Runnable runnable){stop();runnable.run();} }簡化的Spring配置:
server.database.0=file:d:/hsqldb/demobaseserver.dbname.0=demobaseserver.remote_open=truehsqldb.reconfig_logging=false
在Tomcat中啟動Spring時(shí)的示例輸出:
相關(guān)鏈接 :
- http://hsqldb.org/doc/2.0/guide/index.html
- http://dkuntze.wordpress.com/2009/01/28/hsql-on-tomcat/
- http://www.ibm.com/developerworks/data/library/techarticle/dm-0508bader/
參考: YK的Workshop博客中的JCG合作伙伴 Allen Julia 在Spring中嵌入了HSQLDB服務(wù)器實(shí)例 。
翻譯自: https://www.javacodegeeks.com/2012/11/embedding-hsqldb-server-instance-in-spring.html
spring hsqldb
總結(jié)
以上是生活随笔為你收集整理的spring hsqldb_在Spring中嵌入HSQLDB服务器实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 嘴巴英语怎么读 嘴巴的英语是什么
- 下一篇: Spring Batch可重启性