Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为不同客户端共享web应用程序_Java_Grails - Fatal编程技术网

Java 为不同客户端共享web应用程序

Java 为不同客户端共享web应用程序,java,grails,Java,Grails,我们的框架是Grails。假设domain.com包含一个应用程序,并且当前被某个客户端使用。如果我们想允许另一个客户机具有相同的功能,但为两个客户机的数据提供分离,这样他们就不能同时使用这两个客户机,如何做到这一点?无论何时,只要我们想向这个应用程序添加n个客户机,最好的方法是什么,这样我们就可以通过分离数据库来共享这些客户机的公共war文件 实时web开发如何处理这些情况 还有一点是如何为client1提供client1.domain.com,为client2提供client2.domain

我们的框架是Grails。假设domain.com包含一个应用程序,并且当前被某个客户端使用。如果我们想允许另一个客户机具有相同的功能,但为两个客户机的数据提供分离,这样他们就不能同时使用这两个客户机,如何做到这一点?无论何时,只要我们想向这个应用程序添加n个客户机,最好的方法是什么,这样我们就可以通过分离数据库来共享这些客户机的公共war文件

实时web开发如何处理这些情况


还有一点是如何为client1提供client1.domain.com,为client2提供client2.domain.com。如何使war文件(在Java/Grails中)像这样工作?否则,我们必须以编程方式控制项目中的客户端,以允许每个特性,或者不必要地为每个客户端维护单独的war文件,这将是一种资源浪费

您正在描述多租户-为N个“租户”创建一个表,而不是N个相同(或接近)的表,但使用租户id列对其进行分区,并使用该列在SQL WHERE子句中过滤结果

例如,为
findByUsername
生成的代码类似于
select*from person,其中username='foo'和tenant_id=3'
——与常规调用相同的代码,但使用tenant_id列限制在该租户的数据中

请注意,以前简单的事情(如唯一约束)现在更难了,因为您希望限制租户内的唯一性,但允许跨租户重用值。在这种情况下,将唯一约束更改为用户名和租户id的组合会起作用,并在数据库中执行繁重的工作

有一段时间,有几个相关的插件,但它们依赖于调整内部API,一些功能在较新的Hibernate版本中被破坏。但我相信这是积极的;它是一年前更新的,但现在正在使用中。联系作者,如果它看起来像是你需要的,以确保它是活跃的。请注意,这只适用于Hibernate3.x

Hibernate4增加了对多租户的支持,但我还没有听说它在Grails中的使用(这是意料之中的,因为它不是一个常见的需求)。它没有很好的文档记录,但是这个bug报告突出了一些潜在的陷阱,应该仍然是一个工作示例(测试应用程序仍然在GitHub上):


我想确保这是工作,并继续工作,所以请通过电子邮件告诉我,如果你以后有问题。这是一个很好的特性,在Hibernate内核中使用它可以让我们的工作变得更轻松。但是我们需要使它易于使用并有良好的文档记录,当它被用于实际项目中时,这将发生得更快。

我将首先创建两个子域。每个客户一个。部署应用程序两次。每个都配置到另一个数据源,然后在webapps前面放置一个apache服务器,其中包含2个虚拟主机条目和一个mod_jk配置。@RenéLink感谢您的回复。那么,当有新用户注册应用程序时,如何动态地做到这一点呢?