Skip to content

Bug Report: MP Rest Client is not deployed on Payara startup only/FISH-12192 #7655

@lprimak

Description

@lprimak

Brief Summary

When injecting a MicroProfile @RestClient interface into a CDI bean, injection fails, but only when restarting the server.
Latest server is being used (7.2025.2)
This also happens when PostBoot file is being used to deploy the application.
The issue is in the first file at the injection point.

MyApplication.java

import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import org.eclipse.microprofile.rest.client.inject.RestClient;

@ApplicationScoped
public class MyApplication {
    @Inject
    @RestClient
    RestApiClient client;
}

RestApiClient.java

import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;
import org.eclipse.microprofile.rest.client.inject.RegisterRestClient;

@Path("/api")
@RegisterRestClient
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public interface RestApiClient {
    @GET
    @Path("/greet")
    String greet();
}

I believe it relates to an old bug #4704

Expected Outcome

Domain starts and restarts successfully

Current Outcome

Initial deployment is OK. However, when domain is stopped and started, (or re-started) using asadmin start-domain or asadmin restart-domain, you see the following exception and the app fails to deploy:

[#|2025-09-24T22:33:41.918-0500|SEVERE|Payara 6.2025.9|javax.enterprise.system.core|_ThreadID=58;_ThreadName=RunLevelControllerThread-1758771218774;_TimeMillis=1758771221918;_LevelValue=1000;_MessageID=NCLS-CORE-00026;|
  Exception during lifecycle processing
org.glassfish.deployment.common.DeploymentException: CDI deployment failure:WELD-001408: Unsatisfied dependencies for type RestApiClient with qualifiers @RestClient
  at injection point [BackedAnnotatedField] @Inject @RestClient com.flowlogix.reproducers.payara.MyApplication.client
  at com.flowlogix.reproducers.payara.MyApplication.client(MyApplication.java:0)
 -- WELD-001408: Unsatisfied dependencies for type RestApiClient with qualifiers @RestClient
  at injection point [BackedAnnotatedField] @Inject @RestClient com.flowlogix.reproducers.payara.MyApplication.client
  at com.flowlogix.reproducers.payara.MyApplication.client(MyApplication.java:0)

	at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:379)
	at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:294)
	at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:141)
	at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:163)
	at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:533)
	at org.jboss.weld.bootstrap.Validator.validateBeans(Validator.java:518)
	at org.jboss.weld.bootstrap.Validator.validateDeployment(Validator.java:493)
	at org.jboss.weld.bootstrap.WeldStartup.validateBeans(WeldStartup.java:497)
	at org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:94)
	at org.glassfish.weld.WeldDeployer.startWeldBootstrap(WeldDeployer.java:568)
	at org.glassfish.weld.WeldDeployer.processApplicationLoaded(WeldDeployer.java:501)
	at org.glassfish.weld.WeldDeployer.event(WeldDeployer.java:399)
	at org.glassfish.kernel.event.EventsImpl.send(EventsImpl.java:135)
	at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:344)
	at com.sun.enterprise.v3.server.ApplicationLifecycle.prepare(ApplicationLifecycle.java:571)
	at com.sun.enterprise.v3.server.ApplicationLoaderService.processApplication(ApplicationLoaderService.java:434)
	at com.sun.enterprise.v3.server.ApplicationLoaderService.postConstruct(ApplicationLoaderService.java:266)
	at org.jvnet.hk2.internal.ClazzCreator.postConstructMe(ClazzCreator.java:303)
	at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:351)
	at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:466)
	at org.glassfish.hk2.runlevel.internal.AsyncRunLevelContext.findOrCreate(AsyncRunLevelContext.java:281)
	at org.glassfish.hk2.runlevel.RunLevelContext.findOrCreate(RunLevelContext.java:65)
	at org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2103)
	at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:93)
	at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:67)
	at org.glassfish.hk2.runlevel.internal.CurrentTaskFuture$QueueRunner.oneJob(CurrentTaskFuture.java:1213)
	at org.glassfish.hk2.runlevel.internal.CurrentTaskFuture$QueueRunner.run(CurrentTaskFuture.java:1144)
	at org.glassfish.hk2.runlevel.internal.CurrentTaskFuture$UpOneLevel.run(CurrentTaskFuture.java:762)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614)
	at java.base/java.lang.Thread.run(Thread.java:1474)
|#]

Reproducer

You will see the error when restarting
Or, you can deploy the attached WAR.

mp-rest-client-deploy-fail-1.x-SNAPSHOT.war.zip

Operating System

Any

JDK Version

Zulu 25

Payara Distribution

Payara Server Full Profile

Metadata

Metadata

Assignees

Labels

Status: AcceptedConfirmed defect or accepted improvement to implement, issue has been escalated to Platform DevType: BugLabel issue as a bug defect

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions