我们正在开发一个使用Hibernate/JPA访问数据库的JavaFX解决方案。我们在Lucene中使用Hibernate搜索实体,只要程序的一个实例正在运行,实体就会运行得很好。如果启动了第二个实例,搜索仍然有效,但是更新实体失败,因为第一个已启动的应用程序保持索引上的写锁。我们不使用任何类型的JavaEE应用服务器,JavaFX客户端通过Hibernate直接访问数据库。
在最终的生产环境中,将有一个MS服务器保存所有数据和几个在虚拟机中运行的丰富客户端,或者通过VPN到达数据库服务器。我希望所有客户端都可以添加和编辑实体,并立即获取索引更新。我已经试着用Infinispan找到一个解决方案,但是我并没有真正理解从哪里开始和应该做什么。
有人能告诉我如何做到这一点吗?是否可以直接将索引保存在数据库中,或者启动某种服务,以便客户端可以访问当前索引?
发布于 2017-01-31 18:01:35
有多种选择。
因为您提到了在VPN上运行的客户端,所以我不建议在集群模式下运行Infinispan,因为它是用于高性能(本地)链接的,但是您仍然可以在“本地模式”中使用它,让每个客户机通过JDBC缓存存储读取更新的索引。但是,只有在写入频率不高的情况下,此解决方案才能有效,因为每个客户端都需要在每次索引更新上下载大量数据。第二种解决方案将要求每个客户端挂载一个共享文件系统,这同样需要下载和缓存。
https://stackoverflow.com/questions/41940682
复制相似问题