]
Darran Lofthouse commented on WFLY-14033:
-----------------------------------------
[~istudens] FYI now may not be the time for this one.
app-client unable to inject EJB unless also deployed locally to app
client process
----------------------------------------------------------------------------------
Key: WFLY-14033
URL:
https://issues.redhat.com/browse/WFLY-14033
Project: WildFly
Issue Type: Bug
Components: Application Client
Reporter: Darran Lofthouse
Assignee: Ivo Studensky
Priority: Major
Fix For: 22.0.0.Beta1
The current app-client quickstart uses a single ear for both server side and client side,
this did not make sense as it means the EJBs are also deployed to the client process even
though the client process is invoking remote EJBs exclusively.
I have attempted some refactoring to make the quickstart clearer so users can see the
server side requirement and the client side requirement:
https://github.com/darranl/wildfly-quickstart/tree/WFLY-14027
The problem is starting app-client now fails with this error:
{code}
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: WFLYEJB0406:
No EJB found with interface of type
'org.jboss.as.quickstarts.appclient.server.api.StatelessSession' for binding
org.jboss.as.quickstarts.appclient.acc.client.Main/slsb
at
org.jboss.as.ejb3.deployment.processors.EjbInjectionSource.getResourceValue(EjbInjectionSource.java:90)
at
org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.addJndiBinding(ModuleJndiBindingProcessor.java:271)
at
org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor$1.handle(ModuleJndiBindingProcessor.java:242)
at
org.jboss.as.ee.component.ClassDescriptionTraversal.run(ClassDescriptionTraversal.java:54)
at
org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.processClassConfigurations(ModuleJndiBindingProcessor.java:246)
at
org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.deploy(ModuleJndiBindingProcessor.java:160)
at
org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:182)
[wildfly-server-14.0.0.Beta1.jar:14.0.0.Beta1]
... 8 more
{code}
This feels as though the injection should either be a proxy which has not yet connected
to the remote process or should connect to the remote process first to identify the
available beans.
The reason for delayed connection may be to enable authentication before the application
uses the EJBs but deploying server side components on the client doesn't feel like the
correct solution.