spring hsqldb

我一直在愉快地使用XAMPP进行开发,直到不得不将其托管在可通过Internet访问的某个地方,供客户端进行测试和使用。 我有一个仅具有384 RAM的VPS,并且需要快速找到方法,因此决定将XAMPP安装到VPS中。 由于内存较低,因此当MySQL运行时,即使初始Java堆大小设置为64m,Tomcat也无法启动。 在移至OpenShift之前,我设法将网站临时托管在Jelastic中。

我玩弄了将数据库和应用程序服务器实例合并在1个JVM中的想法,以减少RAM使用(与运行MySQL + Tomcat相比)。 搜索Internet之后,我发现了与Tomcat一起运行HSQL服务器实例的几篇文章。 毫无疑问,我必须先更新站点以使其与HSQL兼容,但是作为POC(概念验证)尝试,我决定探索在Spring容器中运行HSQL服务器实例的可行性。

像在Spring中的bean一样运行HSQL服务器有几个原因:

1.多合一配置。 所需配置的一切都在Spring中完成。 Net中有一些示例可以与Tomcat一起运行HSQL实例,但这需要向Tomcat中添加内容(请参见下面的链接)。

2.应用程序服务器独立性。 “理论上”(用引号表示,因为我仅在Tomcat中成功对其进行了测试),由于一切都在Spring中完成,因此无需在appserver中进行任何配置。

HSQL服务器“ bean”还旨在以网络模式(不是进程内(例如,mem或文件))启动实例。 原因如下:

1.“ mem”进程内访问是最快的,但不是持久的。 还有其他一些方法可以使用Spring的spring-jdbc标签来启动“ mem”数据源,这是一种更好的方法。

2.“文件”进程内访问是持久性的,但与“内存”一样,它只能在Java进程内访问。

3.网络模式(hsql)是持久性的,并且可以使用外部JDBC客户端工具访问。 这对于故障排除和验证很有用。

阅读HSQLDB的文档后,下面是执行HSQL服务器实例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时的示例输出:

[Server@1e893ae]: [Thread[pool-2-thread-1,5,main]]: checkRunning(false) entered
[Server@1e893ae]: [Thread[pool-2-thread-1,5,main]]: checkRunning(false) exited
[Server@1e893ae]: Initiating startup sequence...
[Server@1e893ae]: Server socket opened successfully in 7 ms.
Sep 27, 2012 9:26:23 AM org.hsqldb.persist.Logger logInfoEvent
INFO: checkpointClose start
Sep 27, 2012 9:26:23 AM org.hsqldb.persist.Logger logInfoEvent
INFO: checkpointClose end
[Server@1e893ae]: Database [index=0, id=0, db=file:d:/hsqldb/demo
base, alias=demobase] opened sucessfully in 442 ms.
[Server@1e893ae]: Startup sequence completed in 451 ms.
[Server@1e893ae]: 2012-09-27 09:26:23.395 HSQLDB server 2.2.8 is online on port
9001
[Server@1e893ae]: To close normally, connect and execute SHUTDOWN SQL
[Server@1e893ae]: From command line, use [Ctrl]+[C] to abort abruptly

相关链接

  • 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服务器实例 。

翻译自: https://www.javacodegeeks.com/2012/11/embedding-hsqldb-server-instance-in-spring.html

spring hsqldb

spring hsqldb_在Spring中嵌入HSQLDB服务器实例相关推荐

  1. 在Spring中嵌入HSQLDB服务器实例

    我一直在愉快地使用XAMPP进行开发,直到不得不将其托管在可通过Internet访问的某个地方,供客户端进行测试和使用. 我有一个仅具有384 RAM的VPS,并且需要快速找到一种方法,因此决定将XA ...

  2. jax-ws cxf_走向REST:在Spring和JAX-RS(Apache CXF)中嵌入Jetty

    jax-ws cxf 对于服务器核心Java开发人员来说,向世界"展示"的唯一方法是使用API​​. 今天的帖子都是关于JAX-RS的 :使用Java编写和公开RESTful服务. ...

  3. 走向REST:在Spring和JAX-RS(Apache CXF)中嵌入Jetty

    对于服务器核心Java开发人员而言,向世界"展示"的唯一方法是使用API​​. 今天的帖子都是关于JAX-RS的 :使用Java编写和公开RESTful服务. 但是,我们不会使用涉 ...

  4. Spring 4.x框架中的新特性---Spring4.0框架的新功能和改善

    2004年Spring框架首次发布,然后陆续发布了一些重要的版本:Spring2.0提供XML命名空间和AspectJ的支持:Spring2.5包含了注释驱动配置:Spring3.0在框架基础代码中引 ...

  5. Spring Cloud Dalston.RELEASE中文文档

    Spring Cloud Dalston.RELEASE中文文档 Spring Cloud 目录 特性 云原生应用程序 Spring Cloud上下文:应用程序上下文服务 引导应用程序上下文 应用程序 ...

  6. Spring Batch在大型企业中的最佳实践

    在大型企业中,由于业务复杂.数据量大.数据格式不同.数据交互格式繁杂,并非所有的操作都能通过交互界面进行处理.而有一些操作需要定期读取大批量的数据,然后进行一系列的后续处理.这样的过程就是" ...

  7. spring mysql mongdb_Spring Boot中使用MongoDB数据库的方法

    MongoDB数据库简介 简介 MongoDB是一个高性能,开源,无模式的,基于分布式文件存储的文档型数据库,由C++语言编写,其名称来源取自"humongous",是一种开源的文 ...

  8. Spring Boot微服务中Chaos Monkey的应用

    点击蓝色"程序猿DD"关注我哟 有多少人从未在生产环境中遇到系统崩溃或故障?当然,你们每个人迟早都会经历它.如果我们无法避免失败,那么解决方案似乎是将我们的系统维持在永久性故障状态 ...

  9. java ldap操作实例_Java Spring Security示例教程中的2种设置LDAP Active Directory身份验证的方法...

    java ldap操作实例 LDAP身份验证是世界上最流行的企业应用程序身份验证机制之一,而Active Directory (Microsoft为Windows提供的LDAP实现)是另一种广泛使用的 ...

最新文章

  1. C++ 使用 curl 进行 http 请求(GET、POST、Download)的封装
  2. js数组如何按照固定的下标去重_js数组去重的三种常用方法总结
  3. 一次想不到的Spring事务失效问题跟踪(事务不会滚)
  4. linux ps命令 格式 进程状态 各字段含义 简介
  5. Linux环境下如何编译和执行c程序
  6. poj3671Dining Cows(DP)
  7. 从入门到进阶|如何基于WebRTC搭建一个视频会议
  8. 随便唠叨下 最近的事情
  9. 前端html面试题及答案2019,前端面试题及答案2019-20210415034948.docx-原创力文档
  10. 小程序中曾经遇到的坑(1)----canvas画布
  11. 网络学习笔记(一):TCP连接的建立与关闭
  12. 1句Log引发的悲剧
  13. HtmlDocument.ExecCommand() 方法
  14. 二年级的女儿用计算机算算术,小学二年级算术练习题(三篇)
  15. h桥控制电机刹车_一种电机H桥制动电路的制作方法
  16. ubuntu登录mysql报错:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mys
  17. 儿童汽车拼图游戏 - 儿童游戏拼图2岁-5岁
  18. Android源码解析系列
  19. arcgis10之生成无背景色的png图片
  20. 爬取某网站的潮汐数据

热门文章

  1. java drawimage()方法
  2. java中实现客户姓名添加和显示
  3. 指纹识别软件安装包下载
  4. ssh(Spring+Spring mvc+hibernate)——applicationContext.xml
  5. javaWeb服务详解(含源代码,测试通过,注释)
  6. React中的唯一标识key(用index VS id)和key的选择
  7. flume的配置和开启
  8. linux原有的文件系统扩展,原来linux不用LVM也能扩展文件系统
  9. 为什么哲学是最难的学科_什么是哲学哲学对大师来说可能非常理论化,没有一定哲学基础肯能很难 爱问知识人...
  10. Mac 环境变量配置