diff --git a/appserver/common/container-common/src/main/java/com/sun/enterprise/container/common/impl/ComponentEnvManagerImpl.java b/appserver/common/container-common/src/main/java/com/sun/enterprise/container/common/impl/ComponentEnvManagerImpl.java index 5497a7770b3..ea74f172caf 100644 --- a/appserver/common/container-common/src/main/java/com/sun/enterprise/container/common/impl/ComponentEnvManagerImpl.java +++ b/appserver/common/container-common/src/main/java/com/sun/enterprise/container/common/impl/ComponentEnvManagerImpl.java @@ -314,10 +314,13 @@ private String getResourceId(JndiNameEnvironment env, Descriptor desc) { if (dependencyAppliesToScope(desc, ScopeType.MODULE)) { return getApplicationName(env) + "/" + getModuleName(env); } - if (dependencyAppliesToScope(desc, ScopeType.APP)) { - return getApplicationName(env); - } - return ""; + // APP and GLOBAL scopes: scope the underlying physical resource (pool + // name, etc.) to the declaring app. For java:global/ this is what + // prevents two apps declaring the same name from sharing one physical + // pool — which would let connections opened against the first app's + // classloader linger after that app undeploys, blowing up the next + // app's lookups with "ClassLoader is not in expected state". + return getApplicationName(env); } private void addAllDescriptorBindings(JndiNameEnvironment jndiEnv, ScopeType scope, Collection jndiBindings) { diff --git a/appserver/persistence/jnosql-integration/src/main/java/org/glassfish/main/jnosql/jakartapersistence/JakartaPersistenceIntegrationExtension.java b/appserver/persistence/jnosql-integration/src/main/java/org/glassfish/main/jnosql/jakartapersistence/JakartaPersistenceIntegrationExtension.java index 83f36df5c13..8ea37358502 100644 --- a/appserver/persistence/jnosql-integration/src/main/java/org/glassfish/main/jnosql/jakartapersistence/JakartaPersistenceIntegrationExtension.java +++ b/appserver/persistence/jnosql-integration/src/main/java/org/glassfish/main/jnosql/jakartapersistence/JakartaPersistenceIntegrationExtension.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Contributors to the Eclipse Foundation + * Copyright (c) 2025, 2026 Contributors to the Eclipse Foundation * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v. 2.0, which is available at @@ -69,12 +69,15 @@ // TODO - activate this extension and JNoSQL extensions from a sniffer only if interfaces with @Repository annotation exist in the app public class JakartaPersistenceIntegrationExtension implements Extension { - - /* Must be triggered before the JakartaPersistenceExtension from JNoSQL to register the GlassFishClassScanner - before it's used there + /* + * Must be triggered before the JakartaPersistenceExtension from JNoSQL to register + * the GlassFishClassScanner before it's used there */ - void afterBeanDiscovery(@Observes @Priority(Interceptor.Priority.LIBRARY_BEFORE) AfterBeanDiscovery afterBeanDiscovery, BeanManager beanManager) { - + void afterBeanDiscovery( + @Observes + @Priority(Interceptor.Priority.LIBRARY_BEFORE) + AfterBeanDiscovery afterBeanDiscovery, + BeanManager beanManager) { boolean jpaEnabled = new GlassFishJakartaPersistenceClassScanner().isEnabled(); boolean noSqlEnabled = new GlassFishNoSqlClassScanner().isEnabled(); @@ -162,5 +165,4 @@ public T getBy(Class type, String string) { }; } - }