HTML5+;javajax-RS+;Neo4J:每个用户都有自己的数据库

HTML5+;javajax-RS+;Neo4J:每个用户都有自己的数据库,html,jax-rs,neo4j,Html,Jax Rs,Neo4j,我有一个前端在端口80的IIS web服务器上运行。它是使用angular.js框架用HTML5编写的 我在端口8084上的GlassFish应用服务器上运行了一个RESTful后端。它是使用Jersey JAX-RS实现编写的 后端使用在Singleton类的构造函数中创建的Neo4J数据库。因此,当不存在所述类的实例时,将创建数据库。如果实例确实存在,它将使用存储为属性的相同GraphDatabaseService。我这样做是为了防止锁存储错误。如果该类不是单例,它将每次尝试为同一数据库路径

我有一个前端在端口80的IIS web服务器上运行。它是使用angular.js框架用HTML5编写的

我在端口8084上的GlassFish应用服务器上运行了一个RESTful后端。它是使用Jersey JAX-RS实现编写的

后端使用在Singleton类的构造函数中创建的Neo4J数据库。因此,当不存在所述类的实例时,将创建数据库。如果实例确实存在,它将使用存储为属性的相同GraphDatabaseService。我这样做是为了防止锁存储错误。如果该类不是单例,它将每次尝试为同一数据库路径创建一个新的GraphDatabaseService,并且一次只能创建一个

然而,对我的申请的需求已经发生了变化。需要登录,每个用户都将获得自己的数据库。用户名将在databasepath中使用,并且必须传递给(现在仍然是)singleton类


如何更改我的设置,以便每个用户都有自己的数据库,并且用户进行的每个RESTcall都在该数据库上执行。用户应该能够同时使用web应用程序。

这似乎是不可能的。我尝试在multiton中映射几个实例。不幸的是,当请求在另一个数据库中执行某些操作时,一个数据库中的操作似乎会中止。

您必须从httpRequest中检索用户信息。

无论如何,将类实例绑定到http会话的最佳方法是使用状态完整的ejb,但是 restful体系结构并不是设计成有状态的,事实上,每个rest请求都将在其自己的http会话中发生。
阅读了解更多信息