Skip to content

Missing entries in jersey-server/module-info.java? #6043

@theit

Description

@theit

I have a standalone server application using Jersey 4.0.0 as Jakarta REST implementation. The dependencies are similar to those I've described in #6041. Trying to call the login method on the server from a client also using Jersey results in the following exception logged in the server:

Dez. 09, 2025 11:01:00 AM org.glassfish.jersey.server.ServerRuntime$Responder process
WARNUNG: An exception mapping did not successfully produce and processed a response. Logging the exception propagated to the default exception mapper.
org.jboss.weld.exceptions.WeldException: WELD-001524: Unable to load proxy class for bean org.glassfish.jersey.inject.cdi.se.bean.ClassBean@5c906d08 with class class org.glassfish.jersey.server.internal.process.RequestProcessingContextReference
	at [email protected]/org.jboss.weld.bean.proxy.ProxyFactory.getProxyClass(ProxyFactory.java:424)
	at [email protected]/org.jboss.weld.bean.proxy.ProxyFactory.instantiateProxy(ProxyFactory.java:375)
	at [email protected]/org.jboss.weld.bean.proxy.ProxyFactory.create(ProxyFactory.java:368)
	at [email protected]/org.jboss.weld.bean.proxy.ClientProxyFactory.create(ClientProxyFactory.java:84)
	at [email protected]/org.jboss.weld.bean.proxy.ClientProxyProvider.createClientProxy(ClientProxyProvider.java:207)
	at [email protected]/org.jboss.weld.bean.proxy.ClientProxyProvider.createClientProxy(ClientProxyProvider.java:197)
	at [email protected]/org.jboss.weld.bean.proxy.ClientProxyProvider$CreateClientProxy.apply(ClientProxyProvider.java:52)
	at [email protected]/org.jboss.weld.bean.proxy.ClientProxyProvider$CreateClientProxy.apply(ClientProxyProvider.java:48)
	at [email protected]/org.jboss.weld.util.cache.ReentrantMapBackedComputingCache.lambda$new$0(ReentrantMapBackedComputingCache.java:57)
	at [email protected]/org.jboss.weld.util.LazyValueHolder$1.computeValue(LazyValueHolder.java:32)
	at [email protected]/org.jboss.weld.util.LazyValueHolder.get(LazyValueHolder.java:46)
	at [email protected]/org.jboss.weld.util.cache.ReentrantMapBackedComputingCache.getValue(ReentrantMapBackedComputingCache.java:74)
	at [email protected]/org.jboss.weld.util.cache.ReentrantMapBackedComputingCache.getCastValue(ReentrantMapBackedComputingCache.java:80)
	at [email protected]/org.jboss.weld.bean.proxy.ClientProxyProvider.getClientProxy(ClientProxyProvider.java:232)
	at [email protected]/org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:720)
	at [email protected]/org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:746)
	at [email protected]/org.jboss.weld.util.ForwardingBeanManager.getReference(ForwardingBeanManager.java:65)
	at [email protected]/org.jboss.weld.bean.builtin.BeanManagerProxy.getReference(BeanManagerProxy.java:89)
	at [email protected]/org.glassfish.jersey.inject.cdi.se.CdiSeInjectionManager.getInstanceInternal(CdiSeInjectionManager.java:178)
	at [email protected]/org.glassfish.jersey.inject.cdi.se.CdiSeInjectionManager.getInstance(CdiSeInjectionManager.java:161)
	at [email protected]/org.glassfish.jersey.server.ApplicationHandler.lambda$initialize$4(ApplicationHandler.java:430)
	at [email protected]/org.glassfish.jersey.server.internal.process.ReferencesInitializer.apply(ReferencesInitializer.java:57)
	at [email protected]/org.glassfish.jersey.server.internal.process.ReferencesInitializer.apply(ReferencesInitializer.java:31)
	at [email protected]/org.glassfish.jersey.process.internal.Stages$LinkedStage.apply(Stages.java:284)
	at [email protected]/org.glassfish.jersey.process.internal.Stages.process(Stages.java:173)
	at [email protected]/org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:266)
	at [email protected]/org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)
	at [email protected]/org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)
	at [email protected]/org.glassfish.jersey.internal.Errors.process(Errors.java:292)
	at [email protected]/org.glassfish.jersey.internal.Errors.process(Errors.java:274)
	at [email protected]/org.glassfish.jersey.internal.Errors.process(Errors.java:244)
	at [email protected]/org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266)
	at [email protected]/org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253)
	at [email protected]/org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:703)
	at [email protected]/org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer.service(GrizzlyHttpContainer.java:374)
	at [email protected]/org.glassfish.grizzly.http.server.HttpHandler$1.run(HttpHandler.java:190)
	at [email protected]/org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:535)
	at [email protected]/org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:515)
	at java.base/java.lang.Thread.run(Thread.java:1474)
Caused by: java.lang.IllegalAccessError: superinterface check failed: class org.glassfish.jersey.server.internal.process.RequestProcessingContextReference$Proxy$_$$_WeldClientProxy (in module org.glassfish.jersey.core.server) cannot access class org.jboss.weld.proxy.WeldClientProxy (in module weld.api) because module org.glassfish.jersey.core.server does not read module weld.api
	at java.base/java.lang.ClassLoader.defineClass0(Native Method)
	at java.base/java.lang.System$1.defineClass(System.java:2050)
	at java.base/java.lang.invoke.MethodHandles$Lookup$ClassDefiner.defineClass(MethodHandles.java:2354)
	at java.base/java.lang.invoke.MethodHandles$Lookup$ClassDefiner.defineClass(MethodHandles.java:2329)
	at java.base/java.lang.invoke.MethodHandles$Lookup.defineClass(MethodHandles.java:1753)
	at [email protected]/org.jboss.weld.bean.proxy.util.WeldDefaultProxyServices.defineWithMethodLookup(WeldDefaultProxyServices.java:153)
	at [email protected]/org.jboss.weld.bean.proxy.util.WeldDefaultProxyServices.defineClass(WeldDefaultProxyServices.java:62)
	at [email protected]/org.jboss.weld.bean.proxy.ProxyFactory.toClass(ProxyFactory.java:975)
	at [email protected]/org.jboss.weld.bean.proxy.ProxyFactory.createProxyClass(ProxyFactory.java:509)
	at [email protected]/org.jboss.weld.bean.proxy.ProxyFactory.getProxyClass(ProxyFactory.java:416)
	... 38 more

With --add-reads org.glassfish.jersey.core.server=weld.api I see almost the same stacktrace, but with a slightly different cause:

(...)
Caused by: java.lang.IllegalAccessError: superinterface check failed: class org.glassfish.jersey.server.internal.process.RequestProcessingContextReference$Proxy$_$$_WeldClientProxy (in module org.glassfish.jersey.core.server) cannot access class org.jboss.weld.proxy.WeldClientProxy (in module weld.api) because module org.glassfish.jersey.core.server does not read module weld.api
	at java.base/java.lang.ClassLoader.defineClass0(Native Method)
	at java.base/java.lang.System$1.defineClass(System.java:2050)
	at java.base/java.lang.invoke.MethodHandles$Lookup$ClassDefiner.defineClass(MethodHandles.java:2354)
	at java.base/java.lang.invoke.MethodHandles$Lookup$ClassDefiner.defineClass(MethodHandles.java:2329)
	at java.base/java.lang.invoke.MethodHandles$Lookup.defineClass(MethodHandles.java:1753)
	at [email protected]/org.jboss.weld.bean.proxy.util.WeldDefaultProxyServices.defineWithMethodLookup(WeldDefaultProxyServices.java:153)
	at [email protected]/org.jboss.weld.bean.proxy.util.WeldDefaultProxyServices.defineClass(WeldDefaultProxyServices.java:62)
	at [email protected]/org.jboss.weld.bean.proxy.ProxyFactory.toClass(ProxyFactory.java:975)
	at [email protected]/org.jboss.weld.bean.proxy.ProxyFactory.createProxyClass(ProxyFactory.java:509)
	at [email protected]/org.jboss.weld.bean.proxy.ProxyFactory.getProxyClass(ProxyFactory.java:416)
	... 38 more

To get rid of this exception I have to start the server application with --add-reads org.glassfish.jersey.core.server=weld.api,weld.core.impl

But:
Why is this necessary? As far as I can see jersey-server doesn't make use of Weld and its libraries, only jersey-cdi2-se.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions