使用 Spring MVC 和 Hibernate 4.2.0.Final 的多租户 Web 应用程序

2024-01-11

我使用 Spring MVC(3.1.3.RELEASE) 和 Hibernate 4.2.0.Final 开发了一个小型 Web 应用程序。

我正在尝试将其转换为多租户应用程序。

其他线程中也涵盖了类似的主题,但我找不到解决我的问题的明确解决方案。

我想要实现的是设计一个网络应用程序,它能够:

  1. 启动时读取数据源配置(包含多个数据源定义的 XML 文件,该文件位于 WAR 文件外部,不是应用程序上下文或 hibernate 配置文件)

  2. 为每个数据源创建一个会话工厂(考虑到每个数据源都是具有不同架构的数据库)。

  3. 如何将会话工厂范围设置为会话? (或者我可以重复使用同一个会话工厂吗?)。

Example:

 Url for client a - URL: http://project.com/a/login.html
 Url for client b - URL: http://project.com/b/login.html

如果客户端“a”发出请求,则读取数据源配置文件并使用该 XML 文件为客户端“a”创建会话工厂。

如果客户端“b”发送请求,则将重复相同的过程。

我正在寻找的是,如何在客户订阅时实现数据源创建,而无需编辑 Spring 配置文件。它需要自动化。

这是我到目前为止所做的代码。

请有人告诉我,我需要进行哪些修改?

请用一些示例代码给出答案。我在春季和休眠世界中相当陌生。

Spring.xml

  <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close" p:driverClassName="${jdbc.driverClassName}"

        p:url="${jdbc.databaseurl}" 
p:username="${jdbc.username}" p:password="${jdbc.password}" />

    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="configLocation">
            <value>classpath:hibernate.cfg.xml</value>
        </property>

        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">${jdbc.dialect}</prop>
                <prop key="hibernate.show_sql">true</prop>
            </props>
        </property>
    </bean>

<bean id="transactionManager"
        class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />

JDBC.properties 文件

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.dialect=org.hibernate.dialect.MySQLDialect
jdbc.databaseurl=jdbc:mysql://localhost:3306/Logistics
jdbc.username=root
jdbc.password=rot@pspl#12

hibernate.cfg.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>
    <mapping class="pepper.logis.organizations.model.Organizaions" />
    <mapping class="pepper.logis.assets.model.Assets" />

</session-factory>
</hibernate-configuration>

Thanks,


首先使用tenant_id为租户创建一个表,并将其与所有用户关联。现在,您可以在用户登录时获取此详细信息并在会话中设置它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Spring MVC 和 Hibernate 4.2.0.Final 的多租户 Web 应用程序 的相关文章

  • Hibernate JTA:读取每个环境的数据库连接参数

    我正在使用 hibernate 编写一个 javaEE 应用程序 该应用程序将在多个环境 dev qa prod 等 上运行 并且将具有与每个环境关联的单独的数据库 我想为每个环境分别设置 hibernate 属性 如 jdbc url 用
  • 访问 webapp 外部的文件(Tomcat V6 和 Spring)

    我提供上传图像的选项 并且图像正在上传到 opt uploads contactImages 在 Windows 中为 C opt uploads contactImages 我想在我的 JSP 中显示图像 为此 我尝试通过在主机标签下添加
  • Hibernate 5 - createCriteria 已弃用

    我需要帮助来迁移代码createCriteria for Hibernate 5 代码如下 public Curso comDadosIguais Curso curso return Curso this session createCr
  • Java Spring Rest 验证配置属性访问

    我有一个 Spring JSON RestAPI 它使用注释驱动的输入验证 Valid 当我尝试验证另一个对象内的对象时 出现以下错误 java lang IllegalStateException JSR 303 validated pr
  • Spring Security SAML:让 块出现在

    我很难让 Spring Security SAML 与 ADFS 2 0 一起使用 根据我当前的配置 生成的AuthnRequest看起来像这样
  • 如何在 Spring 3 中以编程方式执行注销

    我有一个用于注销的 spring 配置 如下所示
  • 在应用程序启动时将实例注册为“单例”bean

    我正在使用 Spring Boot 我正在尝试构建一个实例ServiceImpl时要解决Service是必须的 目前我将实现注释为 Component但这并没有给我机会构建我想要的实例 The ServiceImpl应使用包含磁盘上文件路径
  • C3P0:生产中未返回的连接超时?

    参数unreturnedConnectionTimeout给定时间段后未返回的连接超时 我正在尝试决定是否应该在我的制作中使用它persistence xml 使用它的一大优点是连接池将能够从泄漏的连接中恢复 一个很大的缺点是泄漏的连接将很
  • 错误:列“this_.phitorsionangle”必须出现在 GROUP BY 子句中或在聚合函数中使用

    我在执行 sql 查询时遇到了一些问题 我正在使用 Hibernate Criteria 来构建查询 我通过按一定间隔 binSize 舍入值然后对它们进行分组来从数据库创建一些容器 当我直接在 SQL 中使用查询尝试时 效果非常好 SEL
  • JPA 乐观锁与同步 Java 方法

    使用 JPA 乐观锁定 我们可以通过 Version 字段控制数据库表是否已被另一个事务同时更新 从而允许在数据库中存储可靠的数据 如果一个Java应用程序只有一个CRUD服务负责数据库中的特定实体 我们也可以同步其方法并管理信息在数据库中
  • 集群环境下如何管理spring缓存

    我正在尝试使用 spring 为我的应用程序构建缓存服务 缓存需要从数据库填充 我的应用程序在三个节点上运行 并希望所有三个节点都与缓存同步 如果一个节点在缓存中获得更新的值 它应该通知其他节点 我在看Spring 缓存抽象 http do
  • 将项目级用户分配给多个租户

    在 Google Identity Platform 文档中找不到任何地方可以清楚地描述是否可以将单个用户分配给多个租户 看https cloud google com identity platform docs multi tenanc
  • 使用 Spring MVC 在 jar 文件中显示 jsp 页面

    我正在使用 Spring MVC 3 2 2 在 java 中开发一个 Web 应用程序 我在从 jar 文件中加载 jsp 页面时遇到问题 Spring MVC Web应用程序具有以下结构 META INF WEB INF spring
  • Spring 从 JBoss 上下文加载 PropertySourcesPlaceholderConfigurer

    我有一个使用 PropertySourcesPlaceholderConfigurer 的 spring 3 1 应用程序加载设置 我想管理测试和生产环境 只需从服务器上下文加载设置覆盖本地文件属性中指定的设置 下一个示例在 Tomcat
  • 使用 Hibernate Envers 的复合表

    我有一个带有复合表的应用程序 其中包含一个额外的列 一切正常 直到我们添加 Hibernate Envers Audited org hibernate MappingException 无法读取 no pack response Resp
  • JpaRepository 上的@Transactional

    我正在使用只读数据库将一些数据输入到我的项目中 我们使用带有 jpa 和 hibernate 的 Spring v3 以下注释是否会使对我的存储库的所有调用成为只读事务 或者我是否需要调用存储库的服务层上的注释 package com bl
  • Spring MVC http 500错误apache

    上面是我的程序的目录层次结构 我是 Spring 新手 正在学习 MVC 概念 我编写了一个程序 它将输入 名称 输入文本框并打印 Hello name 以下是我的目录结构和我创建的各种文件 web xml
  • 如何在 spring-data 中强制使用 CrudRepository 进行预加载?

    我有一个实体 其中包含List就是这样lazy默认加载 interface MyEntityRepository extends CrudRepository
  • Hibernate 标准接受 %% 值

    我正在使用下面的 Hibernate 代码来过滤workFlowName crt add Restrictions like workFlowName workFlow MatchMode ANYWHERE crt is the crite
  • 我怎样才能限定我不“拥有”的自动装配设置器

    要点是 Spring Batch v2 测试框架具有JobLauncherTestUtils setJob与 Autowired注解 我们的测试套件有多个Job类提供者 由于这个类不是我可以修改的东西 我不确定如何限定它自动连接的作业 每个

随机推荐