Quarkus Multitenancy not referencing Connection Provider (even with explicit hibernate property setting) #47920
Unanswered
harikrishnajiju
asked this question in
Q&A
Replies: 1 comment
-
/cc @gsmet (hibernate-orm) |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
I am trying to integrate multitenancy to my Quarkus application. I have been facing some difficulties.
PFA my classes and logs for a minimalistic multitenancy project I setup:
Hibernate Config:
`package com.sc.faas.multitenant;
import io.quarkus.hibernate.orm.PersistenceUnitExtension;
import io.quarkus.runtime.Startup;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import org.hibernate.cfg.Environment;
import javax.sql.DataSource;
import java.util.HashMap;
import java.util.Map;
@ApplicationScoped
@startup
public class HibernateConfig {
}`
Tenant Context
`package com.sc.faas.multitenant;
import jakarta.enterprise.context.ApplicationScoped;
import lombok.extern.slf4j.Slf4j;
@ApplicationScoped
@slf4j
public class TenantContext {
private static final InheritableThreadLocal CURRENT_TENANT = new InheritableThreadLocal<>();
}`
TenantResolver
`package com.sc.faas.multitenant;
import io.quarkus.hibernate.orm.runtime.tenant.TenantResolver;
import jakarta.enterprise.context.ApplicationScoped;
import lombok.extern.slf4j.Slf4j;
@ApplicationScoped
@slf4j
public class SettlementTenantResolver implements TenantResolver {
}`
Connection Provider
`package com.sc.faas.multitenant;
import lombok.extern.slf4j.Slf4j;
import org.hibernate.engine.jdbc.connections.spi.MultiTenantConnectionProvider;
import org.hibernate.service.spi.Wrapped;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
@slf4j
public class CustomMultiTenantConnectionProvider implements MultiTenantConnectionProvider {
}`
RequestResolver
`package com.sc.faas.multitenant;
import jakarta.ws.rs.container.ContainerRequestContext;
import jakarta.ws.rs.container.ContainerRequestFilter;
import jakarta.ws.rs.core.PathSegment;
import jakarta.ws.rs.core.UriInfo;
import jakarta.ws.rs.ext.Provider;
import lombok.extern.slf4j.Slf4j;
import java.io.IOException;
import java.util.List;
@Provider
@slf4j
public class TenantRequestFilter implements ContainerRequestFilter {
}`
Response Filter
`package com.sc.faas.multitenant;
import jakarta.ws.rs.container.ContainerRequestContext;
import jakarta.ws.rs.container.ContainerResponseContext;
import jakarta.ws.rs.container.ContainerResponseFilter;
import jakarta.ws.rs.ext.Provider;
import lombok.extern.slf4j.Slf4j;
import java.io.IOException;
@Provider
@slf4j
public class TenantResponseFilter implements ContainerResponseFilter {
}`
Product Controller:
`@Path("/products")
@produces(MediaType.APPLICATION_JSON)
@consumes(MediaType.APPLICATION_JSON)
public class ProductController {
private static final Logger log = LoggerFactory.getLogger(ProductController.class);
PFA the logs below hitting the tenant-info endpoint:
2025-05-17 22:58:37,447 INFO [com.sc.faa.mul.TenantRequestFilter] (executor-thread-1) Tenant ID from header: hkd 2025-05-17 22:58:37,448 INFO [com.sc.faa.mul.TenantRequestFilter] (executor-thread-1) Setting tenant ID: hkd 2025-05-17 22:58:37,448 INFO [com.sc.faa.mul.TenantContext] (executor-thread-1) Setting Current tenant: hkd 2025-05-17 22:58:37,448 INFO [com.sc.faa.mul.TenantContext] (executor-thread-1) Getting Current tenant: hkd 2025-05-17 22:58:37,448 INFO [com.sc.faa.mul.TenantResponseFilter] (executor-thread-1) Cleaning tenant context
So the issue is that, the connection provider is not called when the API endpoint is hit. This is creating issues on the actual application I am workingon, please help.
Beta Was this translation helpful? Give feedback.
All reactions