框架特性
总体想法
灵活的部署
- 已测试过可在Windows, OS X, Linux上的Java中运行
- 多实例管理(分离的容器或虚拟机中的应用服务器,分离的数据库)
- 数据库
- 默认使用嵌入式的H2数据库
- 自带适用于H2、Derby、PostgreSQL、MySQL、HSQL、Oracle、DB2和SQL Server的配置
- 只需要修改配置就能支持其他数据库
- 其他数据源
- 通过插件插入NoSQL和其他数据源
- OrientDB图形和文档数据库支持OOTB(默认以嵌入式方式运行)
- 应用服务器
- 使用嵌入式的Bitronix BTM或Atomikos TransactionsEssentials的JTA和连接池
- JTA工厂接口插入其他事务管理器,不需要一个全量的J2EE容器
- JTA事务管理器支持,XA-aware连接池 , from 应用服务器 through JNDI
- 可执行的WAR文件可用于命令行数据加载,使用嵌入式的Winstone servlet容器
- 同一个WAR文件能放入像Tomcat或Jetty的servlet容器,或是像JBoss、Weblogic这样的应用服务器
- 自定义部署(嵌入式等)
- 使用提供的MoquiServlet,或基于示例编写你自己的,或者采用非webapp servlet的方式部署
- 所有都运行自一个ExecutionContextFactory实例,所以很容易在自定义的应用中包含,或通过OSGi、Spring等部署
- 使用MoquiInit.properties文件或系统属性(java -D参数)指定运行时目录路径和配置文件位置
- 项目构建
- 用Gradle构建、测试和部署
- 目录结构与Maven/Gradle等事实标准一致
- 方便起见,部署和WAR工具也在Ant build文件中
集群支持
- 各种接口以插入分布式系统工具
- 默认实现使用Hazelcast(在moqui-hazelcast工具组件中),为了协调所有集群,使用单个配置,这样更易于安全地自发现及加入集群。
- 分布式实体(数据库)缓存失效
- 分布式后台(background)服务执行
- 分布式的通知主题
- 分布式的缓存(JCache)
- Web(Servlet)会话复制
默认运行时